10
.gitignore
vendored
|
@ -103,4 +103,12 @@ tpathtxt
|
|||
test.py
|
||||
|
||||
# Migrations
|
||||
monstage/migrations/
|
||||
migrations/
|
||||
*venv/
|
||||
*~
|
||||
\#*
|
||||
.#*
|
||||
*.sqlite3
|
||||
.sass-cache
|
||||
/static/
|
||||
settings.py
|
|
@ -1,7 +1,7 @@
|
|||
from django.contrib import admin
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
from django.contrib.auth.models import User
|
||||
from monstage.models import *
|
||||
from avisstage.models import *
|
||||
|
||||
class NormalienInline(admin.StackedInline):
|
||||
model = Normalien
|
||||
|
@ -10,17 +10,25 @@ class NormalienInline(admin.StackedInline):
|
|||
class UserAdmin(UserAdmin):
|
||||
inlines = (NormalienInline, )
|
||||
|
||||
class AvisLieuInline(admin.StackedInline):
|
||||
model = AvisLieu
|
||||
inline_classes = ("collapse open",)
|
||||
extra = 0
|
||||
|
||||
class LieuStageInline(admin.StackedInline):
|
||||
model = LieuStage
|
||||
class AvisStageInline(admin.StackedInline):
|
||||
model = AvisStage
|
||||
inline_classes = ("collapse open",)
|
||||
extra = 0
|
||||
|
||||
class StageAdmin(admin.ModelAdmin):
|
||||
inlines = (LieuStageInline, )
|
||||
inlines = (AvisLieuInline, AvisStageInline)
|
||||
|
||||
class StageMatiereAdmin(admin.ModelAdmin):
|
||||
model = StageMatiere
|
||||
prepopulated_fields = {"slug": ('nom',)}
|
||||
|
||||
admin.site.unregister(User)
|
||||
admin.site.register(User, UserAdmin)
|
||||
admin.site.register(Lieu)
|
||||
admin.site.register(StageMatiere)
|
||||
admin.site.register(StageMatiere, StageMatiereAdmin)
|
||||
admin.site.register(Stage, StageAdmin)
|
113
avisstage/api.py
Normal file
|
@ -0,0 +1,113 @@
|
|||
# coding: utf-8
|
||||
|
||||
from tastypie.resources import ModelResource
|
||||
from tastypie.authentication import SessionAuthentication
|
||||
from tastypie import fields, utils
|
||||
|
||||
from django.contrib.gis import geos
|
||||
from django.urls import reverse
|
||||
|
||||
from .models import Lieu, Stage, Normalien, StageMatiere
|
||||
|
||||
# API principale pour les lieux
|
||||
class LieuResource(ModelResource):
|
||||
stages = fields.ToManyField("avisstage.api.StageResource",
|
||||
"stages", use_in="detail", full=True)
|
||||
|
||||
class Meta:
|
||||
queryset = Lieu.objects.all()
|
||||
resource_name = "lieu"
|
||||
fields = ["nom", "ville", "pays", "coord", "type_lieu", "id"]
|
||||
|
||||
#login_required
|
||||
authentication = SessionAuthentication()
|
||||
|
||||
# Filtres personnalisés
|
||||
def build_filters(self, filters=None, **kwargs):
|
||||
if filters is None:
|
||||
filters = {}
|
||||
orm_filters = super(LieuResource, self).build_filters(filters, **kwargs)
|
||||
|
||||
# Trouver les lieux à proximités d'un point donné
|
||||
if "lng" in filters and "lat" in filters:
|
||||
lat = float(filters['lat'])
|
||||
lng = float(filters['lng'])
|
||||
pt = geos.Point((lng,lat), srid=4326)
|
||||
self.reference_point = pt
|
||||
orm_filters['coord__distance_lte'] = (pt, 50)
|
||||
|
||||
# Filtrer les lieux qui ont déjà des stages
|
||||
if "has_stage" in filters:
|
||||
orm_filters['stages__public'] = True
|
||||
|
||||
return orm_filters
|
||||
|
||||
# Ajout d'informations
|
||||
def dehydrate(self, bundle):
|
||||
bundle = super(LieuResource, self).dehydrate(bundle)
|
||||
|
||||
obj = bundle.obj
|
||||
bundle.data['coord'] = {'lat': float(obj.coord.y),
|
||||
'lng': float(obj.coord.x)}
|
||||
|
||||
# Distance au point recherché (inutile en fait)
|
||||
#if "lat" in bundle.request.GET and "lng" in bundle.request.GET:
|
||||
# bundle.data['distance'] = self.reference_point.distance(bundle.obj.coord)
|
||||
|
||||
# Autres infos utiles
|
||||
bundle.data["pays_nom"] = obj.get_pays_display()
|
||||
bundle.data["type_lieu_nom"] = obj.type_lieu_fancy
|
||||
# TODO use annotate?
|
||||
bundle.data["num_stages"] = obj.stages.filter(public=True).count()
|
||||
|
||||
return bundle
|
||||
|
||||
# API sur un stage
|
||||
class StageResource(ModelResource):
|
||||
class Meta:
|
||||
queryset = Stage.objects.filter(public=True)
|
||||
resource_name = "stage"
|
||||
fields = ["sujet", "date_debut", "date_fin", "matieres", "id"]
|
||||
|
||||
#login_required
|
||||
authentication = SessionAuthentication()
|
||||
|
||||
# Filtres personnalisés
|
||||
def build_filters(self, filters=None, **kwargs):
|
||||
if filters is None:
|
||||
filters = {}
|
||||
orm_filters = super(StageResource, self).build_filters(filters, **kwargs)
|
||||
|
||||
# Récupération des stages à un lieu donné
|
||||
if "lieux" in filters:
|
||||
flieux = map(int, filters['lieux'].split(','))
|
||||
orm_filters['lieux__id__in'] = flieux
|
||||
|
||||
return orm_filters
|
||||
|
||||
# Informations à ajouter
|
||||
def dehydrate(self, bundle):
|
||||
bundle = super(StageResource, self).dehydrate(bundle)
|
||||
obj = bundle.obj
|
||||
|
||||
# Affichage des manytomany en condensé
|
||||
bundle.data['auteur'] = obj.auteur.nom
|
||||
bundle.data['thematiques'] = list(obj.thematiques.all().values_list("name", flat=True))
|
||||
bundle.data['matieres'] = list(obj.matieres.all().values_list("nom", flat=True))
|
||||
|
||||
# Adresse de la fiche de stage
|
||||
bundle.data['url'] = reverse("avisstage:stage", kwargs={"pk": obj.id});
|
||||
return bundle
|
||||
|
||||
# Auteurs des fiches (TODO supprimer ?)
|
||||
class AuteurResource(ModelResource):
|
||||
stages = fields.ToManyField("avisstage.api.StageResource",
|
||||
"stages", use_in="detail")
|
||||
|
||||
class Meta:
|
||||
queryset = Normalien.objects.all()
|
||||
resource_name = "profil"
|
||||
fields = ["id", "nom", "stages"]
|
||||
|
||||
#login_required
|
||||
authentication = SessionAuthentication()
|
7
avisstage/apps.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class AvisstageConfig(AppConfig):
|
||||
name = 'avisstage'
|
25
avisstage/config.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require 'compass/import-once/activate'
|
||||
# Require any additional compass plugins here.
|
||||
|
||||
# Set this to the root of your project when deployed:
|
||||
http_path = "/"
|
||||
css_dir = "static/css"
|
||||
sass_dir = "sass"
|
||||
images_dir = "static/images"
|
||||
javascripts_dir = "static/js"
|
||||
|
||||
# You can select your preferred output style here (can be overridden via the command line):
|
||||
# output_style = :expanded or :nested or :compact or :compressed
|
||||
|
||||
# To enable relative paths to assets via compass helper functions. Uncomment:
|
||||
# relative_assets = true
|
||||
|
||||
# To disable debugging comments that display the original location of your selectors. Uncomment:
|
||||
# line_comments = false
|
||||
|
||||
|
||||
# If you prefer the indented syntax, you might want to regenerate this
|
||||
# project again passing --syntax sass, or you can uncomment this:
|
||||
# preferred_syntax = :sass
|
||||
# and then run:
|
||||
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
|
105
avisstage/forms.py
Normal file
|
@ -0,0 +1,105 @@
|
|||
# coding: utf-8
|
||||
|
||||
from django import forms
|
||||
from django.utils import timezone
|
||||
|
||||
import re
|
||||
|
||||
from .models import Normalien, Stage, Lieu, AvisLieu, AvisStage
|
||||
from .widgets import LatLonField
|
||||
|
||||
# Sur-classe utile
|
||||
class HTMLTrimmerForm(forms.ModelForm):
|
||||
def clean(self):
|
||||
# Suppression des espaces blanc avant et après le texte pour les champs html
|
||||
leading_white = re.compile(r"^( \t\n)*(<p>( |[ \n\t]|<br[ /]*>)*</p>( \t\n)*)+?", re.IGNORECASE)
|
||||
trailing_white = re.compile(r"(( \t\n)*<p>( |[ \n\t]|<br[ /]*>)*</p>)+?( \t\n)*$", re.IGNORECASE)
|
||||
cleaned_data = super(HTMLTrimmerForm, self).clean()
|
||||
|
||||
for (fname, fval) in cleaned_data.items():
|
||||
# Heuristique : les champs commençant par "avis_" sont des champs html
|
||||
if fname[:5] == "avis_":
|
||||
cleaned_data[fname] = leading_white.sub("", trailing_white.sub("", fval))
|
||||
|
||||
return cleaned_data
|
||||
|
||||
# Infos sur un stage
|
||||
class StageForm(forms.ModelForm):
|
||||
date_widget = forms.DateInput(attrs={"class":"datepicker",
|
||||
"placeholder":"JJ/MM/AAAA"})
|
||||
date_debut = forms.DateField(label=u"Date de début",
|
||||
input_formats=["%d/%m/%Y"], widget=date_widget)
|
||||
date_fin = forms.DateField(label=u"Date de fin",
|
||||
input_formats=["%d/%m/%Y"], widget=date_widget)
|
||||
|
||||
class Meta:
|
||||
model = Stage
|
||||
fields = ['sujet', 'date_debut', 'date_fin', 'type_stage', 'niveau_scol', 'thematiques', 'matieres', 'structure', 'encadrants']
|
||||
help_texts = {
|
||||
"thematiques": u"Mettez une virgule pour valider votre thématique si la suggestion ne correspond pas ou si elle n'existe pas encore",
|
||||
"structure": u"Nom de l'équipe, du laboratoire, de la startup... (si le lieu ne suffit pas)"
|
||||
}
|
||||
labels = {
|
||||
"date_debut": u"Date de début",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Sauvegarde de la request pour avoir l'user
|
||||
if "request" in kwargs:
|
||||
self.request = kwargs.pop("request")
|
||||
super(StageForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def save(self, commit=True):
|
||||
# Lors de la création : attribution à l'utilisateur connecté
|
||||
if self.instance.id is None and hasattr(self, 'request'):
|
||||
self.instance.auteur = self.request.user.profil
|
||||
|
||||
# Date de modification
|
||||
self.instance.date_maj = timezone.now()
|
||||
|
||||
stage = super(StageForm, self).save(commit=commit)
|
||||
return stage
|
||||
|
||||
# Sous-formulaire des avis sur le stage
|
||||
class AvisStageForm(HTMLTrimmerForm):
|
||||
class Meta:
|
||||
model = AvisStage
|
||||
fields = ['chapo', 'avis_sujet', 'avis_ambiance', 'avis_admin', 'les_plus', 'les_moins']
|
||||
help_texts = {
|
||||
"chapo": u"\"Trop long, pas lu\" : une accroche résumant ce que vous avez pensé de ce séjour",
|
||||
"avis_ambiance": u"Avez-vous passé un bon moment à ce travail ? Étiez-vous assez guidé⋅e ? Aviez-vous un bon contact avec vos encadrant⋅e⋅s ? Y avait-il une bonne ambiance dans l'équipe ?",
|
||||
"avis_sujet": u"Quelle était votre mission ? Qu'en avez-vous retiré ? Le travail correspondait-il à vos attentes ? Était-ce à votre niveau, trop dur, trop facile ?",
|
||||
"avis_admin": u"Avez-vous commencé votre travail à la date prévue ? Était-ce compliqué d'obtenir les documents nécessaires (visa, contrats, etc) ? L'administration de l'établissement vous a-t-elle aidé⋅e ? Étiez-vous rémunéré⋅e ?",
|
||||
"les_plus": u"Les principaux points positifs de cette expérience",
|
||||
"les_moins": u"Ce qui aurait pu être mieux",
|
||||
}
|
||||
|
||||
class AvisLieuForm(HTMLTrimmerForm):
|
||||
class Meta:
|
||||
model = AvisLieu
|
||||
fields = ['lieu', 'chapo', 'avis_lieustage', 'avis_pratique', 'avis_tourisme', 'les_plus', 'les_moins']
|
||||
help_texts = {
|
||||
"chapo": u"\"Trop long, pas lu\" : une accroche résumant ce que vous avez pensé de cet endroit",
|
||||
"avis_lieustage": u"Qu'avez-vous pensé des lieux où vous travailliez ? Les bâtiments étaient-ils modernes ? Était-il agréable d'y travailler ?",
|
||||
"avis_pratique": u"Avez-vous eu du mal à trouver un logement ? Y-a-t-il des choses que vous avez apprises sur place qu'il vous aurait été utile de savoir avant de partir ?",
|
||||
"avis_tourisme": u"Y-a-t-il des lieux à visiter dans cette zone ? Avez-vous pratiqué des activités sportives ? Est-il facile de faire des rencontres ?",
|
||||
"les_plus": u"Les meilleures raisons de partir à cet endroit",
|
||||
"les_moins": u"Ce qui vous a gêné ou manqué là-bas",
|
||||
}
|
||||
widgets = {
|
||||
"lieu": forms.HiddenInput(attrs={"class":"lieu-hidden"})
|
||||
}
|
||||
|
||||
# Création d'un nouveau lieu
|
||||
class LieuForm(forms.ModelForm):
|
||||
coord = LatLonField()
|
||||
|
||||
class Meta:
|
||||
model = Lieu
|
||||
fields = ['nom', 'type_lieu', 'ville', 'pays', 'coord']
|
||||
|
||||
# Widget de feedback
|
||||
class FeedbackForm(forms.Form):
|
||||
objet = forms.CharField(label="Objet", required=True)
|
||||
message = forms.CharField(label="Message", required=True, widget=forms.widgets.Textarea())
|
||||
|
272
avisstage/models.py
Normal file
|
@ -0,0 +1,272 @@
|
|||
# coding: utf-8
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_save
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.gis.db import models as geomodels
|
||||
from django.template.defaultfilters import slugify
|
||||
from django.forms.widgets import DateInput
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from taggit_autosuggest.managers import TaggableManager
|
||||
from tinymce.models import HTMLField as RichTextField
|
||||
|
||||
from .utils import choices_length
|
||||
from .statics import DEPARTEMENTS_DEFAUT, PAYS_OPTIONS, TYPE_LIEU_OPTIONS, TYPE_STAGE_OPTIONS, TYPE_LIEU_DICT, TYPE_STAGE_DICT, NIVEAU_SCOL_OPTIONS
|
||||
|
||||
import ldap
|
||||
|
||||
#
|
||||
# Profil Normalien (extension du modèle User)
|
||||
#
|
||||
|
||||
class Normalien(models.Model):
|
||||
user = models.OneToOneField(User, related_name="profil")
|
||||
|
||||
# Infos spécifiques
|
||||
nom = models.CharField(u"Nom complet", max_length=255, blank=True)
|
||||
promotion = models.CharField(u"Promotion", max_length=40, blank=True)
|
||||
mail = models.EmailField(u"Adresse e-mail permanente",
|
||||
max_length=200, blank=True)
|
||||
contactez_moi = models.BooleanField(u"Inviter les visiteurs à me contacter",
|
||||
default=True)
|
||||
bio = models.TextField(u"À propos de moi", blank=True, default="");
|
||||
|
||||
class Meta:
|
||||
verbose_name = u"Profil élève"
|
||||
verbose_name_plural = u"Profils élèves"
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s (%s)" % (self.nom, self.user.username)
|
||||
|
||||
# Liste des stages publiés
|
||||
def stages_publics(self):
|
||||
return self.stages.filter(public=True)
|
||||
|
||||
# Hook à la création d'un nouvel utilisateur : récupération de ses infos par LDAP
|
||||
def create_user_profile(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
profil, created = Normalien.objects.get_or_create(user=instance)
|
||||
try:
|
||||
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
|
||||
l = ldap.initialize("ldaps://ldap.spi.ens.fr:636")
|
||||
l.set_option(ldap.OPT_REFERRALS, 0)
|
||||
l.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
|
||||
l.set_option(ldap.OPT_X_TLS,ldap.OPT_X_TLS_DEMAND)
|
||||
l.set_option(ldap.OPT_X_TLS_DEMAND, True)
|
||||
l.set_option(ldap.OPT_DEBUG_LEVEL, 255)
|
||||
l.set_option(ldap.OPT_NETWORK_TIMEOUT, 10)
|
||||
l.set_option(ldap.OPT_TIMEOUT, 10)
|
||||
|
||||
info = l.search_s('dc=spi,dc=ens,dc=fr',
|
||||
ldap.SCOPE_SUBTREE,
|
||||
('(uid=%s)' % (instance.username,)),
|
||||
[str("cn"),
|
||||
str("mailRoutingAddress"),
|
||||
str("homeDirectory")])
|
||||
|
||||
# Si des informations sont disponibles
|
||||
if len(info) > 0:
|
||||
infos = info[0][1]
|
||||
|
||||
# Nom
|
||||
profil.nom = infos.get('cn', [''])[0]
|
||||
|
||||
# Parsing du homeDirectory pour la promotion
|
||||
if 'homeDirectory' in infos:
|
||||
dirs = infos['homeDirectory'][0].split('/')
|
||||
if dirs[1] == 'users':
|
||||
annee = dirs[2]
|
||||
dep = dirs[3]
|
||||
dep = dict(DEPARTEMENTS_DEFAUT).get(dep.lower(), '')
|
||||
profil.promotion = u'%s %s' % (dep, annee)
|
||||
|
||||
# Mail
|
||||
pmail = infos.get('mailRoutingAddress',
|
||||
['%s@clipper.ens.fr'%instance.username])
|
||||
if len(pmail) > 0:
|
||||
profil.mail = pmail[0]
|
||||
|
||||
profil.save()
|
||||
except ldap.LDAPError:
|
||||
pass
|
||||
post_save.connect(create_user_profile, sender=User)
|
||||
|
||||
#
|
||||
# Lieu de stage
|
||||
#
|
||||
|
||||
class Lieu(models.Model):
|
||||
# Général
|
||||
nom = models.CharField(u"Nom de l'institution d'accueil",
|
||||
max_length=250)
|
||||
type_lieu = models.CharField(u"Type de structure d'accueil",
|
||||
default="universite",
|
||||
choices=TYPE_LIEU_OPTIONS,
|
||||
max_length=choices_length(TYPE_LIEU_OPTIONS))
|
||||
|
||||
# Infos géographiques
|
||||
ville = models.CharField(u"Ville",
|
||||
max_length=200)
|
||||
pays = models.CharField(u"Pays",
|
||||
choices=PAYS_OPTIONS,
|
||||
max_length=choices_length(PAYS_OPTIONS))
|
||||
|
||||
# Coordonnées
|
||||
objects = geomodels.GeoManager() # Requis par GeoDjango
|
||||
coord = geomodels.PointField(u"Coordonnées",
|
||||
geography=True,
|
||||
srid = 4326)
|
||||
|
||||
# Type du lieu en plus joli
|
||||
@property
|
||||
def type_lieu_fancy(self):
|
||||
return TYPE_LIEU_DICT.get(self.type_lieu, ("lieu", False))[0]
|
||||
@property
|
||||
def type_lieu_fem(self):
|
||||
return TYPE_LIEU_DICT.get(self.type_lieu, ("lieu", False))[1]
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s (%s)" % (self.nom, self.ville)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Lieu"
|
||||
verbose_name_plural = "Lieux"
|
||||
|
||||
#
|
||||
# Matières des stages
|
||||
#
|
||||
|
||||
class StageMatiere(models.Model):
|
||||
nom = models.CharField(u"Nom", max_length=30)
|
||||
slug = models.SlugField()
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Matière des stages"
|
||||
verbose_name_plural = "Matières des stages"
|
||||
|
||||
def __unicode__(self):
|
||||
return self.nom
|
||||
|
||||
#
|
||||
# Un stage
|
||||
#
|
||||
|
||||
class Stage(models.Model):
|
||||
# Misc
|
||||
auteur = models.ForeignKey(Normalien, related_name="stages")
|
||||
public = models.BooleanField(u"Visible publiquement", default=False)
|
||||
date_creation = models.DateTimeField(u"Créé le", default=timezone.now)
|
||||
date_maj = models.DateTimeField(u"Mis à jour le", default=timezone.now)
|
||||
|
||||
# Caractéristiques du stage
|
||||
sujet = models.CharField(u"Sujet", max_length=500)
|
||||
|
||||
date_debut = models.DateField(u"Date de début", null=True)
|
||||
date_fin = models.DateField(u"Date de fin", null=True)
|
||||
|
||||
type_stage = models.CharField(u"Type",
|
||||
default="stage",
|
||||
choices=TYPE_STAGE_OPTIONS,
|
||||
max_length=choices_length(TYPE_STAGE_OPTIONS))
|
||||
niveau_scol = models.CharField(u"Année de scolarité",
|
||||
default="",
|
||||
choices=NIVEAU_SCOL_OPTIONS,
|
||||
max_length=choices_length(NIVEAU_SCOL_OPTIONS),
|
||||
blank=True)
|
||||
|
||||
thematiques = TaggableManager(u"Thématiques", blank=True)
|
||||
matieres = models.ManyToManyField(StageMatiere, verbose_name=u"Matière(s)", related_name="stages")
|
||||
encadrants = models.CharField(u"Encadrant⋅e⋅s", max_length=500, blank=True)
|
||||
structure = models.CharField(u"Structure d'accueil", max_length=500, blank=True)
|
||||
|
||||
# Avis
|
||||
lieux = models.ManyToManyField(Lieu, related_name="stages",
|
||||
through="AvisLieu", blank=True)
|
||||
|
||||
# Affichage des avis ordonnés
|
||||
@property
|
||||
def avis_lieux(self):
|
||||
return self.avislieu_set.order_by('order')
|
||||
|
||||
# Shortcut pour affichage rapide
|
||||
@property
|
||||
def lieu_principal(self):
|
||||
avis_lieux = self.avis_lieux
|
||||
if len(avis_lieux) == 0:
|
||||
return None
|
||||
return self.avis_lieux[0].lieu
|
||||
|
||||
# Type du stage en plus joli
|
||||
@property
|
||||
def type_stage_fancy(self):
|
||||
return TYPE_STAGE_DICT.get(self.type_stage, ("stage", False))[0]
|
||||
@property
|
||||
def type_stage_fem(self):
|
||||
return TYPE_STAGE_DICT.get(self.type_stage, ("stage", False))[1]
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('avisstage:stage', self)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s (par %s)" % (self.sujet, self.auteur.user.username)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Stage"
|
||||
|
||||
#
|
||||
# Les avis
|
||||
#
|
||||
|
||||
class AvisStage(models.Model):
|
||||
stage = models.OneToOneField(Stage, related_name="avis_stage")
|
||||
|
||||
chapo = models.TextField(u"En quelques mots", blank=True)
|
||||
avis_ambiance = RichTextField(u"L'ambiance de travail", blank=True)
|
||||
avis_sujet = RichTextField(u"La mission", blank=True)
|
||||
avis_admin = RichTextField(u"Formalités et administration", blank=True)
|
||||
|
||||
les_plus = models.TextField(u"Les plus de cette expérience", blank=True)
|
||||
les_moins = models.TextField(u"Les moins de cette expérience", blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"Avis sur {%s} par %s" % (self.stage.sujet, self.stage.auteur.user.username)
|
||||
|
||||
# Liste des champs d'avis, couplés à leur nom (pour l'affichage)
|
||||
@property
|
||||
def avis_all(self):
|
||||
fields = ['avis_sujet', 'avis_ambiance', 'avis_admin']
|
||||
return [(AvisStage._meta.get_field(field).verbose_name,
|
||||
getattr(self, field, '')) for field in fields]
|
||||
|
||||
|
||||
class AvisLieu(models.Model):
|
||||
stage = models.ForeignKey(Stage)
|
||||
lieu = models.ForeignKey(Lieu)
|
||||
order = models.IntegerField("Ordre", default=0)
|
||||
|
||||
chapo = models.TextField(u"En quelques mots", blank=True)
|
||||
avis_lieustage = RichTextField(u"Les lieux de travail", blank=True)
|
||||
avis_pratique = RichTextField(u"S'installer - conseils pratiques",
|
||||
blank=True)
|
||||
avis_tourisme = RichTextField(u"Dans les parages", blank=True)
|
||||
|
||||
les_plus = models.TextField(u"Les plus du lieu", blank=True)
|
||||
les_moins = models.TextField(u"Les moins du lieu", blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Avis sur un lieu de stage"
|
||||
verbose_name_plural = "Avis sur un lieu de stage"
|
||||
|
||||
def __unicode__(self):
|
||||
return u"Avis sur {%s} par %s" % (self.lieu.nom, self.stage.auteur.user_id)
|
||||
|
||||
# Liste des champs d'avis, couplés à leur nom (pour l'affichage)
|
||||
@property
|
||||
def avis_all(self):
|
||||
fields = ['avis_lieustage', 'avis_pratique', 'avis_tourisme']
|
||||
return [(AvisLieu._meta.get_field(field).verbose_name,
|
||||
getattr(self, field, '')) for field in fields]
|
13
avisstage/sass/_definitions.scss
Normal file
|
@ -0,0 +1,13 @@
|
|||
|
||||
$staticurl: "/experiens/static/";
|
||||
|
||||
$fond: #8fcc33;
|
||||
$barre: darken($fond, 10%);
|
||||
$compl: #f99b20;
|
||||
$jaune: #fff60a;
|
||||
$vert: #1a82dd;//09f7b0;
|
||||
$rouge: #f70978;
|
||||
|
||||
$textfont: 'Dosis', sans-serif;
|
||||
$textfontsize: 19px;
|
||||
$headfont: Podkova, serif;
|
185
avisstage/sass/_responsive.scss
Normal file
|
@ -0,0 +1,185 @@
|
|||
@media screen and (max-width: 850px) {
|
||||
header {
|
||||
font-size: 0.9em;
|
||||
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
nav ul li a {
|
||||
height: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.explications div {
|
||||
max-width: 50vw;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
header {
|
||||
z-index: 40;
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
display: block;
|
||||
max-height:100vh;
|
||||
overflow-y: auto;
|
||||
|
||||
h1 {
|
||||
padding: 10px;
|
||||
}
|
||||
#showmenu {
|
||||
display: block;
|
||||
float: right;
|
||||
padding: 10px;
|
||||
|
||||
img {
|
||||
width: 35px;
|
||||
}
|
||||
}
|
||||
nav {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
|
||||
ul {
|
||||
display: none;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
a {
|
||||
display: block;
|
||||
padding: 10px 20px;
|
||||
height: auto;
|
||||
text-align:right;
|
||||
|
||||
br {
|
||||
display: none;
|
||||
}
|
||||
.username:after {
|
||||
content: " | ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
header.expanded {
|
||||
nav ul {
|
||||
display:block;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
#feedback-button {
|
||||
transform: unset;
|
||||
top: 0px;
|
||||
left: 165px;
|
||||
padding: 15px 5px;
|
||||
z-index: 41;
|
||||
background: rgba(#000, 0.5);
|
||||
}
|
||||
.content {
|
||||
margin-top: 70px;
|
||||
padding: 15px 3vw;
|
||||
}
|
||||
.article-wrapper {
|
||||
display: block;
|
||||
.toc-wrapper, article {
|
||||
display: block;
|
||||
}
|
||||
.toc-wrapper {
|
||||
max-width: unset;
|
||||
width: unset;
|
||||
}
|
||||
.toc {
|
||||
display: none;
|
||||
position: relative;
|
||||
font-size:0.9em;
|
||||
border: 1px solid #000;
|
||||
padding: 4px;
|
||||
}
|
||||
}
|
||||
article.stage {
|
||||
h3 {
|
||||
margin-top: 10px;
|
||||
}
|
||||
section {
|
||||
.avis-texte, .chapo {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
section .plusmoins > div::before {
|
||||
width: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
.homeh1 {
|
||||
display: block;
|
||||
& > * {
|
||||
display:block;
|
||||
}
|
||||
}
|
||||
article.promo {
|
||||
.explications {
|
||||
display:block;
|
||||
div {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.stagelist {
|
||||
display: block;
|
||||
|
||||
li:before, li, a {
|
||||
display:block;
|
||||
width: auto;
|
||||
max-width: auto;
|
||||
}
|
||||
|
||||
li.stage-ajout:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
.field {
|
||||
display: block;
|
||||
|
||||
label, .label {
|
||||
display: block;
|
||||
text-align: left;
|
||||
font-size: 0.95em;
|
||||
color: $compl * 0.8;
|
||||
margin-top: 0;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.help_text {
|
||||
text-align: right;
|
||||
color: $fond * 0.4;
|
||||
}
|
||||
|
||||
.input {
|
||||
padding-left: 20px;
|
||||
display: block;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
input, textarea, div.tinymce, select {
|
||||
background: lighten($fond, 45%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
875
avisstage/sass/screen.scss
Normal file
|
@ -0,0 +1,875 @@
|
|||
@import "compass/reset";
|
||||
@import "_definitions.scss";
|
||||
@import url('https://fonts.googleapis.com/css?family=Dosis:300,500,700|Podkova:700');
|
||||
|
||||
// Général
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background: $fond;
|
||||
font-family: $textfont;
|
||||
line-height: 1.4;
|
||||
font-size: $textfontsize;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
font-family: $headfont;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.3em;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
b, strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
em, i {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
a {
|
||||
font-weight: bold;
|
||||
color: $compl * 0.9;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
// experiens-BETA
|
||||
.beta {
|
||||
position: absolute;
|
||||
opacity: 0.5;
|
||||
font-size: 0.7em;
|
||||
display: inline-block;
|
||||
transform: translate(-1em, 1em) rotate(-15deg);
|
||||
}
|
||||
|
||||
.leaflet-container {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
// Header
|
||||
header {
|
||||
background: $barre;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
#showmenu {
|
||||
display:none;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: inline;
|
||||
ul {
|
||||
display: inline-flex;
|
||||
|
||||
li {
|
||||
display: inline-table;
|
||||
|
||||
a {
|
||||
text-align: center;
|
||||
display: table-cell;
|
||||
padding: 0 20px;
|
||||
height: 90px;
|
||||
vertical-align: middle;
|
||||
color: lighten($fond, 40%);
|
||||
|
||||
&:hover {
|
||||
background: $barre * 0.6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1 {
|
||||
padding: 15px;
|
||||
word-wrap: none;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
// General content
|
||||
|
||||
.content {
|
||||
background: #efefef;
|
||||
width: 900px;
|
||||
max-width: 95vw;
|
||||
padding: 30px;
|
||||
margin: 15px auto;
|
||||
|
||||
p {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-bottom: 0.6em;
|
||||
}
|
||||
}
|
||||
|
||||
// Liste des stages condensée sur le profil
|
||||
|
||||
.condensed-stages {
|
||||
li {
|
||||
display: table;
|
||||
width: 100%;
|
||||
//border: 1px solid $fond * 1.3;
|
||||
background: #fff;
|
||||
margin: 12px;
|
||||
|
||||
& > *, &:before {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
padding: 15px;
|
||||
}
|
||||
a {
|
||||
width: auto;
|
||||
&:hover {
|
||||
background: darken($compl, 10%);
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
&:before {
|
||||
content: "";
|
||||
text-align: right;
|
||||
width: 150px;
|
||||
opacity: 0.8;
|
||||
color: #000;
|
||||
}
|
||||
&.stage-brouillon:before {
|
||||
content: "Brouillon";
|
||||
background: lighten($rouge, 10%);
|
||||
}
|
||||
&.stage-publie:before {
|
||||
content: "Publié";
|
||||
background: lighten($vert, 10%);
|
||||
}
|
||||
&.stage-ajout:before {
|
||||
content:"+";
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.stage-liste {
|
||||
li {
|
||||
display: block;
|
||||
&.date-maj {
|
||||
font-weight: bold;
|
||||
font-size: 0.9em;
|
||||
padding: 3px 0;
|
||||
}
|
||||
&.stage {
|
||||
padding: 10px;
|
||||
background: #fff;
|
||||
margin: 10px;
|
||||
|
||||
h3 {
|
||||
font-size: 1.4em;
|
||||
|
||||
.auteur {
|
||||
font-family: $textfont;
|
||||
font-weight: bold;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
}
|
||||
ul.infos {
|
||||
display:inline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ul.infos {
|
||||
margin: 0 -3px;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
margin: 3px;
|
||||
font-weight: normal;
|
||||
font-size: 0.9em;
|
||||
border-radius: 4px;
|
||||
|
||||
&.thematique {
|
||||
background-color: $vert;
|
||||
color: #fff;
|
||||
}
|
||||
&.matiere {
|
||||
color: #fff;
|
||||
background-color: $fond;
|
||||
}
|
||||
&.lieu {
|
||||
color: #fff;
|
||||
background-color: $compl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
// Détail d'un stage
|
||||
|
||||
article.stage {
|
||||
font-weight: normal;
|
||||
|
||||
h2 {
|
||||
background: desaturate(lighten($jaune, 15%), 40%);
|
||||
color: #000;
|
||||
padding: 10px 20px;
|
||||
margin: -20px;
|
||||
margin-bottom: 25px;
|
||||
text-shadow: -3px 3px 0 rgba(#fff, 0.3);
|
||||
}
|
||||
h3 {
|
||||
border-bottom: 2px solid desaturate($compl, 40%);
|
||||
margin-left: -25px;
|
||||
margin-top: 30px;
|
||||
padding: 5px;
|
||||
padding-left: 20px;
|
||||
color: #000;
|
||||
text-shadow: -3px 3px 0 rgba(#000, 0.1);
|
||||
//margin-right: 25px;
|
||||
}
|
||||
|
||||
#stage-map {
|
||||
height: 300px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
section {
|
||||
background: #eee;
|
||||
padding: 14px;
|
||||
max-width: 600px;
|
||||
margin: 30px auto;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.misc {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.chapo, .avis-texte {
|
||||
margin-bottom: 15px;
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
}
|
||||
.chapo {
|
||||
font-size: 1.1em;
|
||||
font-weight: 500;
|
||||
font-variant: small-caps;
|
||||
}
|
||||
.avis-texte {
|
||||
border-left: 1px solid #ccc;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.plusmoins {
|
||||
max-width: 600px;
|
||||
margin: 15px auto;
|
||||
|
||||
& > div {
|
||||
display: table;
|
||||
width: 100%;
|
||||
|
||||
&:before {
|
||||
content: " ";
|
||||
width: 100px;
|
||||
font-size: 1.8em;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
& > *, &:before {
|
||||
display:table-cell;
|
||||
}
|
||||
|
||||
& > div {
|
||||
padding: 15px;
|
||||
color: #fff;
|
||||
h4 {
|
||||
font-weight: normal;
|
||||
margin-left: -5px;
|
||||
font-size: 0.9em;
|
||||
opacity: 0.9;
|
||||
}
|
||||
p {
|
||||
font-weight: bold;
|
||||
margin: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.plus {
|
||||
& > div {
|
||||
background: darken($vert, 5%);
|
||||
}
|
||||
&:before {
|
||||
content: "Les +";
|
||||
vertical-align: bottom;
|
||||
color: darken($vert, 10%);
|
||||
}
|
||||
}
|
||||
.moins {
|
||||
& > div {
|
||||
background: darken($rouge, 5%);
|
||||
}
|
||||
&:before {
|
||||
content: "Les -";
|
||||
vertical-align: top;
|
||||
color: darken($rouge, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sommaire sur le côté
|
||||
|
||||
.article-wrapper {
|
||||
display: table;
|
||||
margin-left: -15px;
|
||||
|
||||
.toc-wrapper, article {
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
}
|
||||
.toc-wrapper {
|
||||
max-width: 250px;
|
||||
width: 25%;
|
||||
background: #f6f6f6;
|
||||
padding: 5px;
|
||||
}
|
||||
.toc {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 12px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
color: inherit;
|
||||
font-weight: normal;
|
||||
border-radius: 7px;
|
||||
padding: 7px;
|
||||
line-height: 1;
|
||||
|
||||
&:hover {
|
||||
background-color: $fond;
|
||||
}
|
||||
}
|
||||
.toc-h1 a {
|
||||
font-weight: 900;
|
||||
}
|
||||
.toc-h2 {
|
||||
margin-top: 15px;
|
||||
}
|
||||
.toc-h3 a {
|
||||
font-weight: 300;
|
||||
}
|
||||
.toc-active a {
|
||||
background-color: lighten($fond, 30%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Bandeau pour passer en public ou éditer
|
||||
|
||||
.edit-box {
|
||||
background: #eee;
|
||||
margin: 10px;
|
||||
padding: 10px 20px;
|
||||
text-align: center;
|
||||
|
||||
&.public {
|
||||
background: lighten($vert, 40%);
|
||||
border: 1px solid $vert * 0.7;
|
||||
}
|
||||
|
||||
&.prive {
|
||||
background: lighten($rouge, 40%);
|
||||
border: 1px solid $rouge * 0.7;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
// Formulaires
|
||||
|
||||
// Général
|
||||
|
||||
input, textarea, select, div.tinymce, option, optgroup:before {
|
||||
background: #fff;
|
||||
font-size: 1em;
|
||||
font-family: $textfont;
|
||||
line-height: 1.3em;
|
||||
font-weight: 500;
|
||||
padding: 5px;
|
||||
text-align: left;
|
||||
|
||||
&:focus, &.mce-edit-focus {
|
||||
background-color: lighten($fond, 40%);
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
input[type='text'], input[type='password'],
|
||||
input[type='email'], textarea, select {
|
||||
border:none;
|
||||
border-bottom: 1px solid $fond;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
transition: border 1s ease-out, background 1s ease-out;
|
||||
}
|
||||
|
||||
select {
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
width: auto;
|
||||
margin-right: 5px;
|
||||
cursor: pointer;
|
||||
|
||||
option {
|
||||
padding: 3px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
optgroup {
|
||||
option {
|
||||
padding-left: 10px;
|
||||
}
|
||||
&:before {
|
||||
font-weight:bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"], .btn {
|
||||
font: $textfontsize $textfont;
|
||||
background-color: $fond;
|
||||
color: #fff;
|
||||
border: 1px solid $fond * 0.7;
|
||||
border-radius: 5px;
|
||||
padding: 8px 12px;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
p input[type="submit"],
|
||||
p .btn,
|
||||
h1 .btn {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.edit-btn {
|
||||
border-color:darken($jaune, 30%);
|
||||
color: #000;
|
||||
background: url($staticurl + "images/edit.svg") no-repeat right center;
|
||||
background-color:lighten($jaune, 10%);
|
||||
background-origin: content-box;
|
||||
background-size: contain;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
width: 30px;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
textarea, div.tinymce {
|
||||
border:none;
|
||||
border-left: 1px solid $fond;
|
||||
height: auto;
|
||||
min-height: 200px;
|
||||
transition: border 1s ease-out, background 1s ease-out;
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: 200px;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
// Formulaire et labels
|
||||
|
||||
form {
|
||||
.field {
|
||||
margin: 5px 0;
|
||||
display: flex;
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
|
||||
label, .label {
|
||||
display:inline-block;
|
||||
width: 250px;
|
||||
text-align: right;
|
||||
margin-right: 12px;
|
||||
padding-top: 5px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
label {
|
||||
font-family: $headfont;
|
||||
font-weight: bold;
|
||||
}
|
||||
.help_text {
|
||||
font-style: italic;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.input {
|
||||
display:inline-block;
|
||||
flex-grow:1;
|
||||
margin-right:10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// taggit autosuggest
|
||||
|
||||
ul.as-selections {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
li {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.as-selection-item {
|
||||
padding: 0 5px;
|
||||
background: $compl;
|
||||
color: #fff;
|
||||
margin: 5px;
|
||||
border-radius: 2px;
|
||||
font-weight: 500;
|
||||
|
||||
a.as-close {
|
||||
color: #fff;
|
||||
-webkit-cursor: pointer;
|
||||
cursor: pointer;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
background: $fond;
|
||||
}
|
||||
}
|
||||
|
||||
.as-original {
|
||||
flex-grow: 1;
|
||||
min-width: 200px;
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div.as-results {
|
||||
position: relative;
|
||||
ul {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
|
||||
border: 1px solid lighten($fond, 30%);
|
||||
|
||||
li {
|
||||
padding: 3px 5px;
|
||||
}
|
||||
|
||||
li.as-result-item {
|
||||
|
||||
&.active {
|
||||
background: lighten($compl, 30%);
|
||||
}
|
||||
}
|
||||
|
||||
li.as-message {
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
// Fenêtre
|
||||
|
||||
.window {
|
||||
display:none;
|
||||
position:fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 50;
|
||||
|
||||
&.visible {
|
||||
display:block;
|
||||
}
|
||||
|
||||
.window-bg {
|
||||
background: #000;
|
||||
opacity: 0.7;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.window-content {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
margin-top: 50vh;
|
||||
transform: translateY(-50%);
|
||||
z-index: 1;
|
||||
background: #eee;
|
||||
max-width: 600px;
|
||||
width: 90%;
|
||||
max-height: 100%;
|
||||
overflow: auto;
|
||||
|
||||
form {
|
||||
label, .label {
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.window-closer {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 12px;
|
||||
z-index: 3;
|
||||
&:after {
|
||||
content: "×";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
// Widget choix et ajout de lieux
|
||||
|
||||
#map_addlieu {
|
||||
height: 500px;
|
||||
}
|
||||
|
||||
.lieu-ui {
|
||||
.map {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
.masked {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
#avis_lieu_vide {
|
||||
display:none;
|
||||
}
|
||||
|
||||
a.lieu-change {
|
||||
color:#fff;
|
||||
background: $compl;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
max-width: 250px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
margin-right: 7px;
|
||||
|
||||
&.ajout:before {
|
||||
content: "+";
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
#stages-map {
|
||||
width:100%;
|
||||
height: 600px;
|
||||
max-height: 90vh;
|
||||
}
|
||||
|
||||
#feedback-button {
|
||||
position:fixed;
|
||||
left:0;
|
||||
top:30%;
|
||||
color:#fff;
|
||||
z-index:4;
|
||||
background: #000;
|
||||
padding: 14px;
|
||||
transform: rotateZ(90deg);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
|
||||
|
||||
#id_stage-thematiques {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Index
|
||||
|
||||
.homeh1 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-size: 1.2em;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 3px solid #000;
|
||||
margin-bottom: 15px;
|
||||
|
||||
& > * {
|
||||
display: inline-block;
|
||||
}
|
||||
p {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.betacadre {
|
||||
background: lighten($rouge, 20%);
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.entrer {
|
||||
background: #fff;
|
||||
max-width: 500px;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
margin: 15px auto;
|
||||
}
|
||||
|
||||
article.promo {
|
||||
display:block;
|
||||
font-size: 1.1em;
|
||||
|
||||
.explications {
|
||||
display:table;
|
||||
|
||||
&:first-child {
|
||||
direction: rtl;
|
||||
& > * {
|
||||
direction: ltr;
|
||||
}
|
||||
}
|
||||
|
||||
& > div {
|
||||
display:table-cell;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
|
||||
p {
|
||||
margin: 15px 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FAQ
|
||||
.faq-toc {
|
||||
display: block;
|
||||
max-width: 700px;
|
||||
margin: 0 auto;
|
||||
ul {
|
||||
margin: 20px;
|
||||
|
||||
li {
|
||||
a {
|
||||
color: #000;
|
||||
display: block;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
&.toc-h1 {
|
||||
display:none;
|
||||
}
|
||||
|
||||
&.toc-h2 a {
|
||||
background: lighten($compl, 20%);
|
||||
}
|
||||
|
||||
&.toc-h3 a {
|
||||
padding-left: 10px;
|
||||
background: #fff;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #fff;
|
||||
background: $compl !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.faq {
|
||||
article {
|
||||
background: #fff;
|
||||
padding: 15px;
|
||||
h2 {
|
||||
background: lighten($compl, 20%);
|
||||
margin: -15px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
background: $vert;
|
||||
color: #fff;
|
||||
margin: 0 -15px;
|
||||
margin-top: 30px;
|
||||
padding: 10px 15px;
|
||||
|
||||
&:nth-child(2) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-left: 20px;
|
||||
li {
|
||||
list-style: initial;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@import "_responsive.scss";
|
60
avisstage/static/css/MarkerCluster.Default.css
Normal file
|
@ -0,0 +1,60 @@
|
|||
.marker-cluster-small {
|
||||
background-color: rgba(181, 226, 140, 0.6);
|
||||
}
|
||||
.marker-cluster-small div {
|
||||
background-color: rgba(110, 204, 57, 0.6);
|
||||
}
|
||||
|
||||
.marker-cluster-medium {
|
||||
background-color: rgba(241, 211, 87, 0.6);
|
||||
}
|
||||
.marker-cluster-medium div {
|
||||
background-color: rgba(240, 194, 12, 0.6);
|
||||
}
|
||||
|
||||
.marker-cluster-large {
|
||||
background-color: rgba(253, 156, 115, 0.6);
|
||||
}
|
||||
.marker-cluster-large div {
|
||||
background-color: rgba(241, 128, 23, 0.6);
|
||||
}
|
||||
|
||||
/* IE 6-8 fallback colors */
|
||||
.leaflet-oldie .marker-cluster-small {
|
||||
background-color: rgb(181, 226, 140);
|
||||
}
|
||||
.leaflet-oldie .marker-cluster-small div {
|
||||
background-color: rgb(110, 204, 57);
|
||||
}
|
||||
|
||||
.leaflet-oldie .marker-cluster-medium {
|
||||
background-color: rgb(241, 211, 87);
|
||||
}
|
||||
.leaflet-oldie .marker-cluster-medium div {
|
||||
background-color: rgb(240, 194, 12);
|
||||
}
|
||||
|
||||
.leaflet-oldie .marker-cluster-large {
|
||||
background-color: rgb(253, 156, 115);
|
||||
}
|
||||
.leaflet-oldie .marker-cluster-large div {
|
||||
background-color: rgb(241, 128, 23);
|
||||
}
|
||||
|
||||
.marker-cluster {
|
||||
background-clip: padding-box;
|
||||
border-radius: 20px;
|
||||
}
|
||||
.marker-cluster div {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-left: 5px;
|
||||
margin-top: 5px;
|
||||
|
||||
text-align: center;
|
||||
border-radius: 15px;
|
||||
font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.marker-cluster span {
|
||||
line-height: 30px;
|
||||
}
|
14
avisstage/static/css/MarkerCluster.css
Normal file
|
@ -0,0 +1,14 @@
|
|||
.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
|
||||
-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||
-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||
-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||
transition: transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||
}
|
||||
|
||||
.leaflet-cluster-spider-leg {
|
||||
/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
|
||||
-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
|
||||
-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
|
||||
-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
|
||||
transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
|
||||
}
|
7
avisstage/static/css/jquery-ui.min.css
vendored
Normal file
624
avisstage/static/css/leaflet.css
Normal file
|
@ -0,0 +1,624 @@
|
|||
/* required styles */
|
||||
|
||||
.leaflet-pane,
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-tile-container,
|
||||
.leaflet-pane > svg,
|
||||
.leaflet-pane > canvas,
|
||||
.leaflet-zoom-box,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-layer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-container {
|
||||
overflow: hidden;
|
||||
}
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-user-drag: none;
|
||||
}
|
||||
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
|
||||
.leaflet-safari .leaflet-tile {
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
}
|
||||
/* hack that prevents hw layers "stretching" when loading new tiles */
|
||||
.leaflet-safari .leaflet-tile-container {
|
||||
width: 1600px;
|
||||
height: 1600px;
|
||||
-webkit-transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
display: block;
|
||||
}
|
||||
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
|
||||
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
||||
.leaflet-container .leaflet-overlay-pane svg,
|
||||
.leaflet-container .leaflet-marker-pane img,
|
||||
.leaflet-container .leaflet-shadow-pane img,
|
||||
.leaflet-container .leaflet-tile-pane img,
|
||||
.leaflet-container img.leaflet-image-layer {
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
.leaflet-container.leaflet-touch-zoom {
|
||||
-ms-touch-action: pan-x pan-y;
|
||||
touch-action: pan-x pan-y;
|
||||
}
|
||||
.leaflet-container.leaflet-touch-drag {
|
||||
-ms-touch-action: pinch-zoom;
|
||||
}
|
||||
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
}
|
||||
.leaflet-tile {
|
||||
filter: inherit;
|
||||
visibility: hidden;
|
||||
}
|
||||
.leaflet-tile-loaded {
|
||||
visibility: inherit;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
width: 0;
|
||||
height: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
z-index: 800;
|
||||
}
|
||||
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
||||
.leaflet-overlay-pane svg {
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
.leaflet-pane { z-index: 400; }
|
||||
|
||||
.leaflet-tile-pane { z-index: 200; }
|
||||
.leaflet-overlay-pane { z-index: 400; }
|
||||
.leaflet-shadow-pane { z-index: 500; }
|
||||
.leaflet-marker-pane { z-index: 600; }
|
||||
.leaflet-tooltip-pane { z-index: 650; }
|
||||
.leaflet-popup-pane { z-index: 700; }
|
||||
|
||||
.leaflet-map-pane canvas { z-index: 100; }
|
||||
.leaflet-map-pane svg { z-index: 200; }
|
||||
|
||||
.leaflet-vml-shape {
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
}
|
||||
.lvml {
|
||||
behavior: url(#default#VML);
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
/* control positioning */
|
||||
|
||||
.leaflet-control {
|
||||
position: relative;
|
||||
z-index: 800;
|
||||
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-top,
|
||||
.leaflet-bottom {
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-top {
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-right {
|
||||
right: 0;
|
||||
}
|
||||
.leaflet-bottom {
|
||||
bottom: 0;
|
||||
}
|
||||
.leaflet-left {
|
||||
left: 0;
|
||||
}
|
||||
.leaflet-control {
|
||||
float: left;
|
||||
clear: both;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
float: right;
|
||||
}
|
||||
.leaflet-top .leaflet-control {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.leaflet-left .leaflet-control {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* zoom and fade animations */
|
||||
|
||||
.leaflet-fade-anim .leaflet-tile {
|
||||
will-change: opacity;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-popup {
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.2s linear;
|
||||
-moz-transition: opacity 0.2s linear;
|
||||
-o-transition: opacity 0.2s linear;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||
opacity: 1;
|
||||
}
|
||||
.leaflet-zoom-animated {
|
||||
-webkit-transform-origin: 0 0;
|
||||
-ms-transform-origin: 0 0;
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
will-change: transform;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-tile,
|
||||
.leaflet-pan-anim .leaflet-tile {
|
||||
-webkit-transition: none;
|
||||
-moz-transition: none;
|
||||
-o-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
|
||||
/* cursors */
|
||||
|
||||
.leaflet-interactive {
|
||||
cursor: pointer;
|
||||
}
|
||||
.leaflet-grab {
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
}
|
||||
.leaflet-crosshair,
|
||||
.leaflet-crosshair .leaflet-interactive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.leaflet-popup-pane,
|
||||
.leaflet-control {
|
||||
cursor: auto;
|
||||
}
|
||||
.leaflet-dragging .leaflet-grab,
|
||||
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
||||
.leaflet-dragging .leaflet-marker-draggable {
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: -moz-grabbing;
|
||||
}
|
||||
|
||||
/* marker & overlays interactivity */
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-pane > svg path,
|
||||
.leaflet-tile-container {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.leaflet-marker-icon.leaflet-interactive,
|
||||
.leaflet-image-layer.leaflet-interactive,
|
||||
.leaflet-pane > svg path.leaflet-interactive {
|
||||
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* visual tweaks */
|
||||
|
||||
.leaflet-container {
|
||||
background: #ddd;
|
||||
outline: 0;
|
||||
}
|
||||
.leaflet-container a {
|
||||
color: #0078A8;
|
||||
}
|
||||
.leaflet-container a.leaflet-active {
|
||||
outline: 2px solid orange;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
border: 2px dotted #38f;
|
||||
background: rgba(255,255,255,0.5);
|
||||
}
|
||||
|
||||
|
||||
/* general typography */
|
||||
.leaflet-container {
|
||||
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
/* general toolbar styles */
|
||||
|
||||
.leaflet-bar {
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ccc;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-control-layers-toggle {
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
display: block;
|
||||
}
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
.leaflet-bar a:first-child {
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a:last-child {
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom: none;
|
||||
}
|
||||
.leaflet-bar a.leaflet-disabled {
|
||||
cursor: default;
|
||||
background-color: #f4f4f4;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-bar a {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
|
||||
/* zoom control */
|
||||
|
||||
.leaflet-control-zoom-in,
|
||||
.leaflet-control-zoom-out {
|
||||
font: bold 18px 'Lucida Console', Monaco, monospace;
|
||||
text-indent: 1px;
|
||||
}
|
||||
.leaflet-control-zoom-out {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-zoom-in {
|
||||
font-size: 22px;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-zoom-out {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
|
||||
/* layers control */
|
||||
|
||||
.leaflet-control-layers {
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||
background: #fff;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers.png);
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
.leaflet-retina .leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers-2x.png);
|
||||
background-size: 26px 26px;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers-toggle {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
}
|
||||
.leaflet-control-layers .leaflet-control-layers-list,
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||
display: none;
|
||||
}
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
.leaflet-control-layers-expanded {
|
||||
padding: 6px 10px 6px 6px;
|
||||
color: #333;
|
||||
background: #fff;
|
||||
}
|
||||
.leaflet-control-layers-scrollbar {
|
||||
overflow-y: scroll;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.leaflet-control-layers-selector {
|
||||
margin-top: 2px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
.leaflet-control-layers label {
|
||||
display: block;
|
||||
}
|
||||
.leaflet-control-layers-separator {
|
||||
height: 0;
|
||||
border-top: 1px solid #ddd;
|
||||
margin: 5px -10px 5px -6px;
|
||||
}
|
||||
|
||||
/* Default icon URLs */
|
||||
.leaflet-default-icon-path {
|
||||
background-image: url(images/marker-icon.png);
|
||||
}
|
||||
|
||||
|
||||
/* attribution and scale controls */
|
||||
|
||||
.leaflet-container .leaflet-control-attribution {
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
margin: 0;
|
||||
}
|
||||
.leaflet-control-attribution,
|
||||
.leaflet-control-scale-line {
|
||||
padding: 0 5px;
|
||||
color: #333;
|
||||
}
|
||||
.leaflet-control-attribution a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.leaflet-control-attribution a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.leaflet-container .leaflet-control-attribution,
|
||||
.leaflet-container .leaflet-control-scale {
|
||||
font-size: 11px;
|
||||
}
|
||||
.leaflet-left .leaflet-control-scale {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control-scale {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.leaflet-control-scale-line {
|
||||
border: 2px solid #777;
|
||||
border-top: none;
|
||||
line-height: 1.1;
|
||||
padding: 2px 5px 1px;
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child) {
|
||||
border-top: 2px solid #777;
|
||||
border-bottom: none;
|
||||
margin-top: -2px;
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||
border-bottom: 2px solid #777;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-attribution,
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
box-shadow: none;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
border: 2px solid rgba(0,0,0,0.2);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
|
||||
/* popup */
|
||||
|
||||
.leaflet-popup {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.leaflet-popup-content-wrapper {
|
||||
padding: 1px;
|
||||
text-align: left;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.leaflet-popup-content {
|
||||
margin: 13px 19px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.leaflet-popup-content p {
|
||||
margin: 18px 0;
|
||||
}
|
||||
.leaflet-popup-tip-container {
|
||||
width: 40px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -20px;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-popup-tip {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
padding: 1px;
|
||||
|
||||
margin: -10px auto 0;
|
||||
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
.leaflet-popup-content-wrapper,
|
||||
.leaflet-popup-tip {
|
||||
background: white;
|
||||
color: #333;
|
||||
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 4px 4px 0 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||
color: #c3c3c3;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||
color: #999;
|
||||
}
|
||||
.leaflet-popup-scrolled {
|
||||
overflow: auto;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper {
|
||||
zoom: 1;
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
width: 24px;
|
||||
margin: 0 auto;
|
||||
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip-container {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-control-zoom,
|
||||
.leaflet-oldie .leaflet-control-layers,
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper,
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
border: 1px solid #999;
|
||||
}
|
||||
|
||||
|
||||
/* div icon */
|
||||
|
||||
.leaflet-div-icon {
|
||||
background: #fff;
|
||||
border: 1px solid #666;
|
||||
}
|
||||
|
||||
|
||||
/* Tooltip */
|
||||
/* Base styles for the element that has a tooltip */
|
||||
.leaflet-tooltip {
|
||||
position: absolute;
|
||||
padding: 6px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 3px;
|
||||
color: #222;
|
||||
white-space: nowrap;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-tooltip.leaflet-clickable {
|
||||
cursor: pointer;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-tooltip-top:before,
|
||||
.leaflet-tooltip-bottom:before,
|
||||
.leaflet-tooltip-left:before,
|
||||
.leaflet-tooltip-right:before {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
border: 6px solid transparent;
|
||||
background: transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
/* Directions */
|
||||
|
||||
.leaflet-tooltip-bottom {
|
||||
margin-top: 6px;
|
||||
}
|
||||
.leaflet-tooltip-top {
|
||||
margin-top: -6px;
|
||||
}
|
||||
.leaflet-tooltip-bottom:before,
|
||||
.leaflet-tooltip-top:before {
|
||||
left: 50%;
|
||||
margin-left: -6px;
|
||||
}
|
||||
.leaflet-tooltip-top:before {
|
||||
bottom: 0;
|
||||
margin-bottom: -12px;
|
||||
border-top-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-bottom:before {
|
||||
top: 0;
|
||||
margin-top: -12px;
|
||||
margin-left: -6px;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-left {
|
||||
margin-left: -6px;
|
||||
}
|
||||
.leaflet-tooltip-right {
|
||||
margin-left: 6px;
|
||||
}
|
||||
.leaflet-tooltip-left:before,
|
||||
.leaflet-tooltip-right:before {
|
||||
top: 50%;
|
||||
margin-top: -6px;
|
||||
}
|
||||
.leaflet-tooltip-left:before {
|
||||
right: 0;
|
||||
margin-right: -12px;
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-right:before {
|
||||
left: 0;
|
||||
margin-left: -12px;
|
||||
border-right-color: #fff;
|
||||
}
|
1155
avisstage/static/css/screen.css
Normal file
89
avisstage/static/images/edit-blanc.svg
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="30"
|
||||
height="30"
|
||||
viewBox="0 0 30 30"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="edit-blanc.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="86.228624"
|
||||
inkscape:cy="18.753803"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="720"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1022.3622)">
|
||||
<g
|
||||
id="g4372"
|
||||
transform="matrix(0.1950975,0.12792324,-0.12792324,0.1950975,12.575109,970.01712)"
|
||||
inkscape:transform-center-x="9.426612"
|
||||
inkscape:transform-center-y="-184.76167"
|
||||
style="fill:#ffffff">
|
||||
<rect
|
||||
y="178.07649"
|
||||
x="153.93788"
|
||||
height="108.57143"
|
||||
width="25.714285"
|
||||
id="rect4136"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:transform-center-y="2.4737558"
|
||||
transform="matrix(0.67322984,0,0,0.45859357,53.904262,157.37111)"
|
||||
d="m 186.37143,291.03041 -9.34305,16.18265 -9.34306,16.18266 -9.34306,-16.18266 -9.34306,-16.18265 18.68612,0 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="0.52359878"
|
||||
sodipodi:arg1="-0.52359878"
|
||||
sodipodi:r2="10.788434"
|
||||
sodipodi:r1="21.576868"
|
||||
sodipodi:cy="301.81885"
|
||||
sodipodi:cx="167.68532"
|
||||
sodipodi:sides="3"
|
||||
id="path4138"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
88
avisstage/static/images/edit.svg
Normal file
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="30"
|
||||
height="30"
|
||||
viewBox="0 0 30 30"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="edit.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="86.228624"
|
||||
inkscape:cy="18.753803"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="720"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1022.3622)">
|
||||
<g
|
||||
id="g4372"
|
||||
transform="matrix(0.1950975,0.12792324,-0.12792324,0.1950975,12.575109,970.01712)"
|
||||
inkscape:transform-center-x="9.426612"
|
||||
inkscape:transform-center-y="-184.76167">
|
||||
<rect
|
||||
y="178.07649"
|
||||
x="153.93788"
|
||||
height="108.57143"
|
||||
width="25.714285"
|
||||
id="rect4136"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:transform-center-y="2.4737558"
|
||||
transform="matrix(0.67322984,0,0,0.45859357,53.904262,157.37111)"
|
||||
d="m 186.37143,291.03041 -9.34305,16.18265 -9.34306,16.18266 -9.34306,-16.18266 -9.34306,-16.18265 18.68612,0 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="0.52359878"
|
||||
sodipodi:arg1="-0.52359878"
|
||||
sodipodi:r2="10.788434"
|
||||
sodipodi:r1="21.576868"
|
||||
sodipodi:cy="301.81885"
|
||||
sodipodi:cx="167.68532"
|
||||
sodipodi:sides="3"
|
||||
id="path4138"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
BIN
avisstage/static/images/marker-blue.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
avisstage/static/images/marker-green.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
avisstage/static/images/marker-red.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
avisstage/static/images/markers-soft.png
Normal file
After Width: | Height: | Size: 40 KiB |
11
avisstage/static/images/minimenu.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
|
||||
<path fill="none" stroke="#FFFFFF" stroke-width="2" d="M47.062,41.393c0,3.131-2.538,5.669-5.669,5.669H8.608 c-3.131,0-5.669-2.538-5.669-5.669V8.608c0-3.131,2.538-5.669,5.669-5.669h32.785c3.131,0,5.669,2.538,5.669,5.669V41.393z"/>
|
||||
<g>
|
||||
<line fill="none" stroke="#FFFFFF" stroke-width="3" x1="10.826" y1="15" x2="40.241" y2="15"/>
|
||||
<line fill="none" stroke="#FFFFFF" stroke-width="3" x1="10.826" y1="25" x2="40.241" y2="25"/>
|
||||
<line fill="none" stroke="#FFFFFF" stroke-width="3" x1="10.826" y1="35" x2="40.241" y2="35"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 998 B |
5
avisstage/static/js/jquery-1.12.4.min.js
vendored
Normal file
4
avisstage/static/js/jquery-3.2.0.min.js
vendored
Normal file
18706
avisstage/static/js/jquery-ui.js
vendored
Normal file
13
avisstage/static/js/jquery-ui.min.js
vendored
Normal file
144
avisstage/static/js/leaflet-gplaces-autocomplete.js
Normal file
|
@ -0,0 +1,144 @@
|
|||
(function () {
|
||||
L.GPlaceAutocomplete = {};
|
||||
|
||||
L.Control.GPlaceAutocomplete = L.Control.extend({
|
||||
options: {
|
||||
position: "topright",
|
||||
prepend: true,
|
||||
collapsed_mode: false,
|
||||
autocomplete_options: {}
|
||||
},
|
||||
|
||||
collapsedModeIsExpanded: true,
|
||||
|
||||
autocomplete: null,
|
||||
icon: null,
|
||||
searchBox: null,
|
||||
|
||||
initialize: function (options) {
|
||||
if (options) {
|
||||
L.Util.setOptions(this, options);
|
||||
}
|
||||
if (!this.options.callback) {
|
||||
this.options.callback = this.onLocationComplete;
|
||||
}
|
||||
this._buildContainer();
|
||||
},
|
||||
|
||||
_buildContainer: function () {
|
||||
|
||||
// build structure
|
||||
this.container = L.DomUtil.create("div", "leaflet-gac-container leaflet-bar");
|
||||
var searchWrapper = L.DomUtil.create("div", "leaflet-gac-wrapper");
|
||||
this.searchBox = L.DomUtil.create("input", "leaflet-gac-control");
|
||||
this.autocomplete = new google.maps.places.Autocomplete(this.searchBox, this.options.autocomplete_options);
|
||||
|
||||
// if collapse mode set - create icon and register events
|
||||
if (this.options.collapsed_mode) {
|
||||
this.collapsedModeIsExpanded = false;
|
||||
|
||||
this.icon = L.DomUtil.create("div", "leaflet-gac-search-btn");
|
||||
L.DomEvent
|
||||
.on(this.icon, "click", this._showSearchBar, this);
|
||||
|
||||
this.icon.appendChild(
|
||||
L.DomUtil.create("div", "leaflet-gac-search-icon")
|
||||
);
|
||||
|
||||
searchWrapper.appendChild(
|
||||
this.icon
|
||||
);
|
||||
L.DomUtil.addClass(this.searchBox, "leaflet-gac-hidden");
|
||||
}
|
||||
|
||||
searchWrapper.appendChild(
|
||||
this.searchBox
|
||||
);
|
||||
// create and bind autocomplete
|
||||
this.container.appendChild(
|
||||
searchWrapper
|
||||
);
|
||||
|
||||
},
|
||||
|
||||
//***
|
||||
// Collapse mode callbacks
|
||||
//***
|
||||
|
||||
_showSearchBar: function () {
|
||||
this._toggleSearch(true);
|
||||
},
|
||||
|
||||
_hideSearchBar: function () {
|
||||
// if element is expanded, we need to change expanded flag and call collapse handler
|
||||
if (this.collapsedModeIsExpanded) {
|
||||
this._toggleSearch(false);
|
||||
}
|
||||
},
|
||||
|
||||
_toggleSearch: function (shouldDisplaySearch) {
|
||||
if (shouldDisplaySearch) {
|
||||
L.DomUtil.removeClass(this.searchBox, "leaflet-gac-hidden");
|
||||
L.DomUtil.addClass(this.icon, "leaflet-gac-hidden");
|
||||
this.searchBox.focus();
|
||||
} else {
|
||||
L.DomUtil.addClass(this.searchBox, "leaflet-gac-hidden");
|
||||
L.DomUtil.removeClass(this.icon, "leaflet-gac-hidden");
|
||||
}
|
||||
this.collapsedModeIsExpanded = shouldDisplaySearch;
|
||||
},
|
||||
|
||||
//***
|
||||
// Default success callback
|
||||
//***
|
||||
|
||||
onLocationComplete: function (place, map) {
|
||||
// default callback
|
||||
if (!place.geometry) {
|
||||
alert("Location not found");
|
||||
return;
|
||||
}
|
||||
map.panTo([
|
||||
place.geometry.location.lat(),
|
||||
place.geometry.location.lng()
|
||||
]);
|
||||
|
||||
},
|
||||
|
||||
onAdd: function () {
|
||||
// stop propagation of click events
|
||||
L.DomEvent.addListener(this.container, 'click', L.DomEvent.stop);
|
||||
L.DomEvent.disableClickPropagation(this.container);
|
||||
if (this.options.collapsed_mode) {
|
||||
// if collapse mode - register handler
|
||||
this._map.on('dragstart click', this._hideSearchBar, this);
|
||||
}
|
||||
return this.container;
|
||||
},
|
||||
|
||||
addTo: function (map) {
|
||||
this._map = map;
|
||||
|
||||
var container = this._container = this.onAdd(map),
|
||||
pos = this.options.position,
|
||||
corner = map._controlCorners[pos];
|
||||
|
||||
L.DomUtil.addClass(container, 'leaflet-control');
|
||||
if (this.options.prepend) {
|
||||
corner.insertBefore(container, corner.firstChild);
|
||||
} else {
|
||||
corner.appendChild(container)
|
||||
}
|
||||
|
||||
var callback = this.options.callback;
|
||||
var _this = this;
|
||||
google.maps.event.addListener(this.autocomplete, "place_changed", function () {
|
||||
callback(_this.autocomplete.getPlace(), map);
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
})();
|
9
avisstage/static/js/leaflet.js
Normal file
7
avisstage/static/js/leaflet.markercluster.js
Normal file
254
avisstage/static/js/select_lieu.js
Normal file
|
@ -0,0 +1,254 @@
|
|||
function SelectLieuWidget(STATIC_ROOT, API_LIEU, target, callback) {
|
||||
var map, input, autocomplete, map_el;
|
||||
var $el = $(target);
|
||||
var ui_el = $el.find('.lieu-ui');
|
||||
var form_el = $el.find('form');
|
||||
var content_el = $el.find('.window-content');
|
||||
var ui_ready = false;
|
||||
var lieux_db = {};
|
||||
var message_el = $el.find(".lieu-message");
|
||||
var closer = $el.find(".window-closer");
|
||||
|
||||
form_el.detach();
|
||||
form_el.on("submit", nouveauLieu);
|
||||
|
||||
function initUI(){
|
||||
$.each(ui_el.children(), function(i, item){$(item).remove();});
|
||||
|
||||
closer.on("click", closeWidget).attr("href", "javascript:void(0);");
|
||||
$el.find(".window-bg").on("click", closeWidget);
|
||||
|
||||
map_el = $("<div>", {class: "map"});
|
||||
input = $("<input>",
|
||||
{type:"text",
|
||||
placeholder:"Chercher un établissement..."});
|
||||
|
||||
ui_el.append(input);
|
||||
ui_el.append(map_el);
|
||||
|
||||
// Affiche la carte
|
||||
map = L.map(map_el[0]).setView([48.8422411,2.3430553], 13);
|
||||
var layer = new L.StamenTileLayer("terrain");
|
||||
map.addLayer(layer);
|
||||
|
||||
// Autocomplete
|
||||
autocomplete = new google.maps.places.Autocomplete(input[0]);
|
||||
autocomplete.setTypes(["geocode", "establishment"]);
|
||||
autocomplete.addListener('place_changed', handlePlaceSearch);
|
||||
}
|
||||
|
||||
function showMessage(message) {
|
||||
content_el.find(".message").text(message);
|
||||
}
|
||||
|
||||
function hideMessage() {
|
||||
showMessage("");
|
||||
}
|
||||
|
||||
function setLieuOrigine (lieu) {
|
||||
map.panTo(lieu.coord);
|
||||
lieuSurCarte(lieu, greenIcon);
|
||||
}
|
||||
|
||||
function handleLieuOrigine(data) {
|
||||
hideMessage();
|
||||
lieux_db[data.id] = data;
|
||||
setLieuOrigine(data);
|
||||
askForSuggestions(data.coord);
|
||||
}
|
||||
|
||||
this.showWidget = function(lieu_id) {
|
||||
$el.addClass("visible").removeClass("ajout");
|
||||
if(!ui_ready)
|
||||
initUI();
|
||||
hideMessage();
|
||||
ui_el.removeClass("hidden");
|
||||
form_el.detach();
|
||||
if (lieu_id === undefined) {
|
||||
$el.find("h3").text("Ajouter un lieu");
|
||||
map_el.addClass("masked");
|
||||
} else {
|
||||
lieu_id = lieu_id * 1;
|
||||
$el.find("h3").text("Modifier le lieu");
|
||||
if(lieux_db[lieu_id] === undefined) {
|
||||
$.getJSON(API_LIEU + lieu_id + "/?format=json",
|
||||
handleLieuOrigine);
|
||||
showMessage("Chargement...");
|
||||
ui_el.addClass("hidden");
|
||||
} else {
|
||||
handleLieuOrigine(lieux_db[lieu_id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function closeWidget () {
|
||||
$el.removeClass("visible");
|
||||
}
|
||||
|
||||
this.closeWidget = closeWidget;
|
||||
|
||||
|
||||
// Icones
|
||||
function makeIcon(couleur){
|
||||
return L.icon({
|
||||
iconUrl: STATIC_ROOT + 'images/marker-'+couleur+'.png',
|
||||
iconSize: [36, 46],
|
||||
iconAnchor: [18, 45],
|
||||
popupAnchor: [0, -48]
|
||||
})
|
||||
}
|
||||
var greenIcon = makeIcon('green');
|
||||
var redIcon = makeIcon('red');
|
||||
var blueIcon = makeIcon('blue');
|
||||
|
||||
// Callback de l'autocomplete
|
||||
function handlePlaceSearch() {
|
||||
var place = autocomplete.getPlace();
|
||||
if (!place.geometry) {
|
||||
return;
|
||||
}
|
||||
console.log(place);
|
||||
|
||||
if (lieux_db.suggestion !== undefined) {
|
||||
lieux_db.suggestion.marqueur.remove();
|
||||
lieux_db.suggestion = undefined;
|
||||
}
|
||||
|
||||
// Processing du lieu
|
||||
var data = {};
|
||||
$.each(place.address_components, function(i, obj) {
|
||||
for (var j=0; j<obj.types.length; j++) {
|
||||
switch(obj.types[j]) {
|
||||
case "locality":
|
||||
data.ville = obj.long_name;
|
||||
break;
|
||||
case "country":
|
||||
data.pays = obj.short_name;
|
||||
data.pays_nom = obj.long_name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
data.nom = place.name;
|
||||
data.coord = {lng: place.geometry.location.lng(),
|
||||
lat: place.geometry.location.lat()};
|
||||
data.orig_coord = data.coord;
|
||||
data.fromSuggestion = true;
|
||||
|
||||
lieux_db.suggestion = data;
|
||||
|
||||
map.panTo(data.coord);
|
||||
lieuSurCarte(data, redIcon);
|
||||
|
||||
// Affichage des suggestions
|
||||
askForSuggestions(location);
|
||||
}
|
||||
|
||||
function askForSuggestions (location) {
|
||||
$.getJSON("/api/v1/lieu/", {"format":"json",
|
||||
"lat":location.lat,
|
||||
"lng":location.lng}, showPropositions);
|
||||
}
|
||||
|
||||
// Callback suggestions
|
||||
function showPropositions(data) {
|
||||
$.each(data.objects, function(i, item) {
|
||||
var plieu = lieux_db[item.id];
|
||||
if(plieu !== undefined)
|
||||
item = plieu;
|
||||
else
|
||||
lieux_db[item.id] = item;
|
||||
lieuSurCarte(item, blueIcon);
|
||||
});
|
||||
}
|
||||
|
||||
function lieuSurCarte(data, icone) {
|
||||
map_el.removeClass("masked");
|
||||
// data : des données sur un lieu, sérialisé comme par tastypie
|
||||
if(data.marqueur !== undefined) {
|
||||
if(map.hasLayer(data.marqueur))
|
||||
return;
|
||||
}
|
||||
|
||||
var fromSuggestion = false;
|
||||
|
||||
// Si c'est un résultat d'autocomplete
|
||||
if(data.fromSuggestion === true) {
|
||||
fromSuggestion = true;
|
||||
}
|
||||
var marqueur = L.marker(data.coord,
|
||||
{icon: icone, draggable: fromSuggestion});
|
||||
|
||||
data.marqueur = marqueur;
|
||||
var desc = $("<div>").append($("<h3>").text(data.nom))
|
||||
.append($("<p>").text(data.ville+", "+data.pays_nom));
|
||||
if (data.num_stages !== undefined)
|
||||
desc.append($("<p>").text(data.num_stages + (data.num_stages > 1 ? " stages" : " stage") + " à cet endroit"));
|
||||
|
||||
var activeBtn = $("<a>", {href:"javascript:void(0);"})
|
||||
.prop("_lieustage_data", data)
|
||||
.on("click", choixLieuStage);
|
||||
|
||||
if(!fromSuggestion) {
|
||||
activeBtn.text("Choisir ce lieu");
|
||||
} else {
|
||||
var resetBtn = $("<a>", {href:"javascript:void(0);"})
|
||||
.text("Réinitialiser la position")
|
||||
.prop("_lieustage_data", data)
|
||||
.on("click", resetOrigLieu);
|
||||
desc.append($("<p>").append(resetBtn))
|
||||
activeBtn.text("Créer un nouveau lieu ici");
|
||||
}
|
||||
desc.append($("<p>").append(activeBtn));
|
||||
|
||||
marqueur.bindPopup(desc[0]).addTo(map);
|
||||
}
|
||||
|
||||
function resetOrigLieu() {
|
||||
var data = this._lieustage_data;
|
||||
data.marqueur.setLatLng(data.orig_coord);
|
||||
map.panTo(data.orig_coord);
|
||||
}
|
||||
|
||||
function choixLieuStage() {
|
||||
var choix = this._lieustage_data;
|
||||
if(!choix.fromSuggestion)
|
||||
callback(choix);
|
||||
else
|
||||
showForm(choix);
|
||||
}
|
||||
|
||||
function showForm(choix) {
|
||||
$el.addClass("ajout");
|
||||
content_el.append(form_el);
|
||||
form_el.find("#id_nom").val(choix.nom);
|
||||
form_el.find("#id_ville").val(choix.ville);
|
||||
form_el.find("#id_pays").val(choix.pays);
|
||||
form_el.find("#id_coord_0").val(choix.coord.lat);
|
||||
form_el.find("#id_coord_1").val(choix.coord.lng);
|
||||
}
|
||||
|
||||
function nouveauLieu() {
|
||||
var coord = lieux_db.suggestion.marqueur.getLatLng();
|
||||
form_el.find("#id_coord_0").val(coord.lat);
|
||||
form_el.find("#id_coord_1").val(coord.lng);
|
||||
$.post(form_el.attr("action")+"?format=json",
|
||||
form_el.serialize(),
|
||||
onLieuCreated);
|
||||
form_el.detach();
|
||||
showMessage("Envoi en cours...");
|
||||
return false;
|
||||
}
|
||||
|
||||
function onLieuCreated(data) {
|
||||
console.log(data);
|
||||
if(data.success = false) {
|
||||
content_el.find(".message").text("Erreur : "+data.errors);
|
||||
content_el.append(form_el);
|
||||
} else {
|
||||
lieux_db.suggestion.id = data.id;
|
||||
lieux_db.suggestion.nom = form_el.find("#id_nom").val();
|
||||
callback(lieux_db.suggestion);
|
||||
}
|
||||
}
|
||||
}
|
293
avisstage/static/js/tile.stamen.js
Normal file
|
@ -0,0 +1,293 @@
|
|||
(function(exports) {
|
||||
|
||||
/*
|
||||
* tile.stamen.js v1.3.0
|
||||
*/
|
||||
|
||||
var SUBDOMAINS = "a. b. c. d.".split(" "),
|
||||
MAKE_PROVIDER = function(layer, type, minZoom, maxZoom) {
|
||||
return {
|
||||
"url": ["//stamen-tiles-{s}a.ssl.fastly.net/", layer, "/{Z}/{X}/{Y}.", type].join(""),
|
||||
"type": type,
|
||||
"subdomains": SUBDOMAINS.slice(),
|
||||
"minZoom": minZoom,
|
||||
"maxZoom": maxZoom,
|
||||
"attribution": [
|
||||
'Map tiles by <a href="http://stamen.com/">Stamen Design</a>, ',
|
||||
'under <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. ',
|
||||
'Data by <a href="http://openstreetmap.org/">OpenStreetMap</a>, ',
|
||||
'under <a href="http://creativecommons.org/licenses/by-sa/3.0">CC BY SA</a>.'
|
||||
].join("")
|
||||
};
|
||||
},
|
||||
PROVIDERS = {
|
||||
"toner": MAKE_PROVIDER("toner", "png", 0, 20),
|
||||
"terrain": MAKE_PROVIDER("terrain", "png", 0, 18),
|
||||
"terrain-classic": MAKE_PROVIDER("terrain-classic", "png", 0, 18),
|
||||
"watercolor": MAKE_PROVIDER("watercolor", "jpg", 1, 18),
|
||||
"trees-cabs-crime": {
|
||||
"url": "http://{S}.tiles.mapbox.com/v3/stamen.trees-cabs-crime/{Z}/{X}/{Y}.png",
|
||||
"type": "png",
|
||||
"subdomains": "a b c d".split(" "),
|
||||
"minZoom": 11,
|
||||
"maxZoom": 18,
|
||||
"extent": [
|
||||
{"lat": 37.853, "lon": -122.577},
|
||||
{"lat": 37.684, "lon": -122.313}
|
||||
],
|
||||
"attribution": [
|
||||
'Design by Shawn Allen at <a href="http://stamen.com/">Stamen</a>.',
|
||||
'Data courtesy of <a href="http://fuf.net/">FuF</a>,',
|
||||
'<a href="http://www.yellowcabsf.com/">Yellow Cab</a>',
|
||||
'& <a href="http://sf-police.org/">SFPD</a>.'
|
||||
].join(" ")
|
||||
}
|
||||
};
|
||||
|
||||
PROVIDERS["terrain-classic"].url = "//stamen-tiles-{s}a.ssl.fastly.net/terrain/{Z}/{X}/{Y}.png";
|
||||
|
||||
// set up toner and terrain flavors
|
||||
setupFlavors("toner", ["hybrid", "labels", "lines", "background", "lite"]);
|
||||
setupFlavors("terrain", ["background", "labels", "lines"]);
|
||||
|
||||
// toner 2010
|
||||
deprecate("toner", ["2010"]);
|
||||
|
||||
// toner 2011 flavors
|
||||
deprecate("toner", ["2011", "2011-lines", "2011-labels", "2011-lite"]);
|
||||
|
||||
var odbl = [
|
||||
"toner",
|
||||
"toner-hybrid",
|
||||
"toner-labels",
|
||||
"toner-lines",
|
||||
"toner-background",
|
||||
"toner-lite",
|
||||
"terrain",
|
||||
"terrain-background",
|
||||
"terrain-lines",
|
||||
"terrain-labels",
|
||||
"terrain-classic"
|
||||
];
|
||||
|
||||
for (var i = 0; i < odbl.length; i++) {
|
||||
var key = odbl[i];
|
||||
|
||||
PROVIDERS[key].retina = true;
|
||||
PROVIDERS[key].attribution = [
|
||||
'Map tiles by <a href="http://stamen.com/">Stamen Design</a>, ',
|
||||
'under <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. ',
|
||||
'Data by <a href="http://openstreetmap.org">OpenStreetMap</a>, ',
|
||||
'under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.'
|
||||
].join("");
|
||||
}
|
||||
|
||||
/*
|
||||
* Export stamen.tile to the provided namespace.
|
||||
*/
|
||||
exports.stamen = exports.stamen || {};
|
||||
exports.stamen.tile = exports.stamen.tile || {};
|
||||
exports.stamen.tile.providers = PROVIDERS;
|
||||
exports.stamen.tile.getProvider = getProvider;
|
||||
|
||||
function deprecate(base, flavors) {
|
||||
var provider = getProvider(base);
|
||||
|
||||
for (var i = 0; i < flavors.length; i++) {
|
||||
var flavor = [base, flavors[i]].join("-");
|
||||
PROVIDERS[flavor] = MAKE_PROVIDER(flavor, provider.type, provider.minZoom, provider.maxZoom);
|
||||
PROVIDERS[flavor].deprecated = true;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* A shortcut for specifying "flavors" of a style, which are assumed to have the
|
||||
* same type and zoom range.
|
||||
*/
|
||||
function setupFlavors(base, flavors, type) {
|
||||
var provider = getProvider(base);
|
||||
for (var i = 0; i < flavors.length; i++) {
|
||||
var flavor = [base, flavors[i]].join("-");
|
||||
PROVIDERS[flavor] = MAKE_PROVIDER(flavor, type || provider.type, provider.minZoom, provider.maxZoom);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the named provider, or throw an exception if it doesn't exist.
|
||||
*/
|
||||
function getProvider(name) {
|
||||
if (name in PROVIDERS) {
|
||||
var provider = PROVIDERS[name];
|
||||
|
||||
if (provider.deprecated && console && console.warn) {
|
||||
console.warn(name + " is a deprecated style; it will be redirected to its replacement. For performance improvements, please change your reference.");
|
||||
}
|
||||
|
||||
return provider;
|
||||
} else {
|
||||
throw 'No such provider (' + name + ')';
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* StamenTileLayer for modestmaps-js
|
||||
* <https://github.com/modestmaps/modestmaps-js/>
|
||||
*
|
||||
* Works with both 1.x and 2.x by checking for the existence of MM.Template.
|
||||
*/
|
||||
if (typeof MM === "object") {
|
||||
var ModestTemplate = (typeof MM.Template === "function")
|
||||
? MM.Template
|
||||
: MM.TemplatedMapProvider;
|
||||
MM.StamenTileLayer = function(name) {
|
||||
var provider = getProvider(name);
|
||||
this._provider = provider;
|
||||
MM.Layer.call(this, new ModestTemplate(provider.url, provider.subdomains));
|
||||
this.provider.setZoomRange(provider.minZoom, provider.maxZoom);
|
||||
this.attribution = provider.attribution;
|
||||
};
|
||||
|
||||
MM.StamenTileLayer.prototype = {
|
||||
setCoordLimits: function(map) {
|
||||
var provider = this._provider;
|
||||
if (provider.extent) {
|
||||
map.coordLimits = [
|
||||
map.locationCoordinate(provider.extent[0]).zoomTo(provider.minZoom),
|
||||
map.locationCoordinate(provider.extent[1]).zoomTo(provider.maxZoom)
|
||||
];
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
MM.extend(MM.StamenTileLayer, MM.Layer);
|
||||
}
|
||||
|
||||
/*
|
||||
* StamenTileLayer for Leaflet
|
||||
* <http://leaflet.cloudmade.com/>
|
||||
*
|
||||
* Tested with version 0.3 and 0.4, but should work on all 0.x releases.
|
||||
*/
|
||||
if (typeof L === "object") {
|
||||
L.StamenTileLayer = L.TileLayer.extend({
|
||||
initialize: function(name, options) {
|
||||
var provider = getProvider(name),
|
||||
url = provider.url.replace(/({[A-Z]})/g, function(s) {
|
||||
return s.toLowerCase();
|
||||
}),
|
||||
opts = L.Util.extend({}, options, {
|
||||
"minZoom": provider.minZoom,
|
||||
"maxZoom": provider.maxZoom,
|
||||
"subdomains": provider.subdomains,
|
||||
"scheme": "xyz",
|
||||
"attribution": provider.attribution,
|
||||
sa_id: name
|
||||
});
|
||||
L.TileLayer.prototype.initialize.call(this, url, opts);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Factory function for consistency with Leaflet conventions
|
||||
*/
|
||||
L.stamenTileLayer = function (options, source) {
|
||||
return new L.StamenTileLayer(options, source);
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* StamenTileLayer for OpenLayers
|
||||
* <http://openlayers.org/>
|
||||
*
|
||||
* Tested with v2.1x.
|
||||
*/
|
||||
if (typeof OpenLayers === "object") {
|
||||
// make a tile URL template OpenLayers-compatible
|
||||
function openlayerize(url) {
|
||||
return url.replace(/({.})/g, function(v) {
|
||||
return "$" + v.toLowerCase();
|
||||
});
|
||||
}
|
||||
|
||||
// based on http://www.bostongis.com/PrinterFriendly.aspx?content_name=using_custom_osm_tiles
|
||||
OpenLayers.Layer.Stamen = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
||||
initialize: function(name, options) {
|
||||
var provider = getProvider(name),
|
||||
url = provider.url,
|
||||
subdomains = provider.subdomains,
|
||||
hosts = [];
|
||||
if (url.indexOf("{S}") > -1) {
|
||||
for (var i = 0; i < subdomains.length; i++) {
|
||||
hosts.push(openlayerize(url.replace("{S}", subdomains[i])));
|
||||
}
|
||||
} else {
|
||||
hosts.push(openlayerize(url));
|
||||
}
|
||||
options = OpenLayers.Util.extend({
|
||||
"numZoomLevels": provider.maxZoom,
|
||||
"buffer": 0,
|
||||
"transitionEffect": "resize",
|
||||
// see: <http://dev.openlayers.org/apidocs/files/OpenLayers/Layer/OSM-js.html#OpenLayers.Layer.OSM.tileOptions>
|
||||
// and: <http://dev.openlayers.org/apidocs/files/OpenLayers/Tile/Image-js.html#OpenLayers.Tile.Image.crossOriginKeyword>
|
||||
"tileOptions": {
|
||||
"crossOriginKeyword": null
|
||||
},
|
||||
"attribution": provider.attribution
|
||||
}, options);
|
||||
return OpenLayers.Layer.OSM.prototype.initialize.call(this, name, hosts, options);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* StamenMapType for Google Maps API V3
|
||||
* <https://developers.google.com/maps/documentation/javascript/>
|
||||
*/
|
||||
if (typeof google === "object" && typeof google.maps === "object") {
|
||||
|
||||
// Extending Google class based on a post by Bogart Salzberg of Portland Webworks,
|
||||
// http://www.portlandwebworks.com/blog/extending-googlemapsmap-object
|
||||
google.maps.ImageMapType = (function(_constructor){
|
||||
var f = function() {
|
||||
if (!arguments.length) {
|
||||
return;
|
||||
}
|
||||
_constructor.apply(this, arguments);
|
||||
}
|
||||
f.prototype = _constructor.prototype;
|
||||
return f;
|
||||
})(google.maps.ImageMapType);
|
||||
|
||||
|
||||
google.maps.StamenMapType = function(name) {
|
||||
var provider = getProvider(name),
|
||||
subdomains = provider.subdomains;
|
||||
return google.maps.ImageMapType.call(this, {
|
||||
"getTileUrl": function(coord, zoom) {
|
||||
var numTiles = 1 << zoom,
|
||||
wx = coord.x % numTiles,
|
||||
x = (wx < 0) ? wx + numTiles : wx,
|
||||
y = coord.y,
|
||||
index = (zoom + x + y) % subdomains.length;
|
||||
return provider.url
|
||||
.replace("{S}", subdomains[index])
|
||||
.replace("{Z}", zoom)
|
||||
.replace("{X}", x)
|
||||
.replace("{Y}", y);
|
||||
},
|
||||
"tileSize": new google.maps.Size(256, 256),
|
||||
"name": name,
|
||||
"minZoom": provider.minZoom,
|
||||
"maxZoom": provider.maxZoom
|
||||
});
|
||||
};
|
||||
|
||||
// FIXME: is there a better way to extend classes in Google land?
|
||||
// Possibly fixed, see above ^^^ | SC
|
||||
google.maps.StamenMapType.prototype = new google.maps.ImageMapType;
|
||||
}
|
||||
|
||||
})(typeof exports === "undefined" ? this : exports);
|
1
avisstage/static/js/tinymce/jquery.tinymce.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!function(e){function t(){function t(e){"remove"===e&&this.each(function(e,t){var n=i(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=tinymce.get(t.id.replace(/_parent$/,""));n&&n.remove()})}function r(e){var n,r=this;if(null!=e)t.call(r),r.each(function(t,n){var r;(r=tinymce.get(n.id))&&r.setContent(e)});else if(r.length>0&&(n=tinymce.get(r[0].id)))return n.getContent()}function i(e){var t=null;return e&&e.id&&a.tinymce&&(t=tinymce.get(e.id)),t}function o(e){return!!(e&&e.length&&a.tinymce&&e.is(":tinymce"))}var s={};e.each(["text","html","val"],function(t,a){var l=s[a]=e.fn[a],u="text"===a;e.fn[a]=function(t){var a=this;if(!o(a))return l.apply(a,arguments);if(t!==n)return r.call(a.filter(":tinymce"),t),l.apply(a.not(":tinymce"),arguments),a;var s="",c=arguments;return(u?a:a.eq(0)).each(function(t,n){var r=i(n);s+=r?u?r.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):r.getContent({save:!0}):l.apply(e(n),c)}),s}}),e.each(["append","prepend"],function(t,r){var a=s[r]=e.fn[r],l="prepend"===r;e.fn[r]=function(e){var t=this;return o(t)?e!==n?("string"==typeof e&&t.filter(":tinymce").each(function(t,n){var r=i(n);r&&r.setContent(l?e+r.getContent():r.getContent()+e)}),a.apply(t.not(":tinymce"),arguments),t):void 0:a.apply(t,arguments)}}),e.each(["remove","replaceWith","replaceAll","empty"],function(n,r){var i=s[r]=e.fn[r];e.fn[r]=function(){return t.call(this,r),i.apply(this,arguments)}}),s.attr=e.fn.attr,e.fn.attr=function(t,a){var l=this,u=arguments;if(!t||"value"!==t||!o(l))return a!==n?s.attr.apply(l,u):s.attr.apply(l,u);if(a!==n)return r.call(l.filter(":tinymce"),a),s.attr.apply(l.not(":tinymce"),u),l;var c=l[0],d=i(c);return d?d.getContent({save:!0}):s.attr.apply(e(c),u)}}var n,r,i,o=[],a=window;e.fn.tinymce=function(n){function s(){var r=[],o=0;i||(t(),i=!0),d.each(function(e,t){var i,a=t.id,s=n.oninit;a||(t.id=a=tinymce.DOM.uniqueId()),tinymce.get(a)||(i=new tinymce.Editor(a,n,tinymce.EditorManager),r.push(i),i.on("init",function(){var e,t=s;d.css("visibility",""),s&&++o==r.length&&("string"==typeof t&&(e=t.indexOf(".")===-1?null:tinymce.resolve(t.replace(/\.\w+$/,"")),t=tinymce.resolve(t)),t.apply(e||tinymce,r))}))}),e.each(r,function(e,t){t.render()})}var l,u,c,d=this,f="";if(!d.length)return d;if(!n)return window.tinymce?tinymce.get(d[0].id):null;if(d.css("visibility","hidden"),a.tinymce||r||!(l=n.script_url))1===r?o.push(s):s();else{r=1,u=l.substring(0,l.lastIndexOf("/")),l.indexOf(".min")!=-1&&(f=".min"),a.tinymce=a.tinyMCEPreInit||{base:u,suffix:f},l.indexOf("gzip")!=-1&&(c=n.language||"en",l=l+(/\?/.test(l)?"&":"?")+"js=true&core=true&suffix="+escape(f)+"&themes="+escape(n.theme||"modern")+"&plugins="+escape(n.plugins||"")+"&languages="+(c||""),a.tinyMCE_GZ||(a.tinyMCE_GZ={start:function(){function t(e){tinymce.ScriptLoader.markDone(tinymce.baseURI.toAbsolute(e))}t("langs/"+c+".js"),t("themes/"+n.theme+"/theme"+f+".js"),t("themes/"+n.theme+"/langs/"+c+".js"),e.each(n.plugins.split(","),function(e,n){n&&(t("plugins/"+n+"/plugin"+f+".js"),t("plugins/"+n+"/langs/"+c+".js"))})},end:function(){}}));var p=document.createElement("script");p.type="text/javascript",p.onload=p.onreadystatechange=function(t){t=t||window.event,2===r||"load"!=t.type&&!/complete|loaded/.test(p.readyState)||(tinymce.dom.Event.domLoaded=1,r=2,n.script_loaded&&n.script_loaded(),s(),e.each(o,function(e,t){t()}))},p.src=l,document.body.appendChild(p)}return d},e.extend(e.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in window&&(t=tinymce.get(e.id),t&&t.editorManager===tinymce))}})}(jQuery);
|
230
avisstage/static/js/tinymce/langs/fr_FR.js
Normal file
|
@ -0,0 +1,230 @@
|
|||
tinymce.addI18n('fr_FR',{
|
||||
"Cut": "Couper",
|
||||
"Heading 5": "En-t\u00eate 5",
|
||||
"Header 2": "Titre 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
|
||||
"Heading 4": "En-t\u00eate 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "En-t\u00eate 2",
|
||||
"Paste": "Coller",
|
||||
"Close": "Fermer",
|
||||
"Font Family": "Police",
|
||||
"Pre": "Pre",
|
||||
"Align right": "Aligner \u00e0 droite",
|
||||
"New document": "Nouveau document",
|
||||
"Blockquote": "Citation",
|
||||
"Numbered list": "Num\u00e9rotation",
|
||||
"Heading 1": "En-t\u00eate 1",
|
||||
"Headings": "En-t\u00eates",
|
||||
"Increase indent": "Augmenter le retrait",
|
||||
"Formats": "Formats",
|
||||
"Headers": "Titres",
|
||||
"Select all": "Tout s\u00e9lectionner",
|
||||
"Header 3": "Titre 3",
|
||||
"Blocks": "Blocs",
|
||||
"Undo": "Annuler",
|
||||
"Strikethrough": "Barr\u00e9",
|
||||
"Bullet list": "Puces",
|
||||
"Header 1": "Titre 1",
|
||||
"Superscript": "Exposant",
|
||||
"Clear formatting": "Effacer la mise en forme",
|
||||
"Font Sizes": "Taille de police",
|
||||
"Subscript": "Indice",
|
||||
"Header 6": "Titre 6",
|
||||
"Redo": "R\u00e9tablir",
|
||||
"Paragraph": "Paragraphe",
|
||||
"Ok": "Ok",
|
||||
"Bold": "Gras",
|
||||
"Code": "Code",
|
||||
"Italic": "Italique",
|
||||
"Align center": "Centrer",
|
||||
"Header 5": "Titre 5",
|
||||
"Heading 6": "En-t\u00eate 6",
|
||||
"Heading 3": "En-t\u00eate 3",
|
||||
"Decrease indent": "Diminuer le retrait",
|
||||
"Header 4": "Titre 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
|
||||
"Underline": "Soulign\u00e9",
|
||||
"Cancel": "Annuler",
|
||||
"Justify": "Justifier",
|
||||
"Inline": "En ligne",
|
||||
"Copy": "Copier",
|
||||
"Align left": "Aligner \u00e0 gauche",
|
||||
"Visual aids": "Aides visuelle",
|
||||
"Lower Greek": "Grec minuscule",
|
||||
"Square": "Carr\u00e9",
|
||||
"Default": "Par d\u00e9faut",
|
||||
"Lower Alpha": "Alpha minuscule",
|
||||
"Circle": "Cercle",
|
||||
"Disc": "Disque",
|
||||
"Upper Alpha": "Alpha majuscule",
|
||||
"Upper Roman": "Romain majuscule",
|
||||
"Lower Roman": "Romain minuscule",
|
||||
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores",
|
||||
"Name": "Nom",
|
||||
"Anchor": "Ancre",
|
||||
"Id": "Id",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
|
||||
"Restore last draft": "Restaurer le dernier brouillon",
|
||||
"Special character": "Caract\u00e8res sp\u00e9ciaux",
|
||||
"Source code": "Code source",
|
||||
"Language": "Langue",
|
||||
"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "V",
|
||||
"Color": "Couleur",
|
||||
"Right to left": "Droite \u00e0 gauche",
|
||||
"Left to right": "Gauche \u00e0 droite",
|
||||
"Emoticons": "Emotic\u00f4nes",
|
||||
"Robots": "Robots",
|
||||
"Document properties": "Propri\u00e9t\u00e9 du document",
|
||||
"Title": "Titre",
|
||||
"Keywords": "Mots-cl\u00e9s",
|
||||
"Encoding": "Encodage",
|
||||
"Description": "Description",
|
||||
"Author": "Auteur",
|
||||
"Fullscreen": "Plein \u00e9cran",
|
||||
"Horizontal line": "Ligne horizontale",
|
||||
"Horizontal space": "Espacement horizontal",
|
||||
"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
|
||||
"General": "G\u00e9n\u00e9ral",
|
||||
"Advanced": "Avanc\u00e9",
|
||||
"Source": "Source",
|
||||
"Border": "Bordure",
|
||||
"Constrain proportions": "Conserver les proportions",
|
||||
"Vertical space": "Espacement vertical",
|
||||
"Image description": "Description de l'image",
|
||||
"Style": "Style",
|
||||
"Dimensions": "Dimensions",
|
||||
"Insert image": "Ins\u00e9rer une image",
|
||||
"Image": "Image",
|
||||
"Zoom in": "Zoomer",
|
||||
"Contrast": "Contraste",
|
||||
"Back": "Retour",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "Retournement horizontal",
|
||||
"Resize": "Redimensionner",
|
||||
"Sharpen": "Affiner",
|
||||
"Zoom out": "D\u00e9zoomer",
|
||||
"Image options": "Options de l'image",
|
||||
"Apply": "Appliquer",
|
||||
"Brightness": "Luminosit\u00e9",
|
||||
"Rotate clockwise": "Rotation horaire",
|
||||
"Rotate counterclockwise": "Rotation anti-horaire",
|
||||
"Edit image": "Modifier l'image",
|
||||
"Color levels": "Niveaux de couleur",
|
||||
"Crop": "Rogner",
|
||||
"Orientation": "Orientation",
|
||||
"Flip vertically": "Retournement vertical",
|
||||
"Invert": "Inverser",
|
||||
"Date\/time": "Date\/heure",
|
||||
"Insert date\/time": "Ins\u00e9rer date\/heure",
|
||||
"Remove link": "Enlever le lien",
|
||||
"Url": "Url",
|
||||
"Text to display": "Texte \u00e0 afficher",
|
||||
"Anchors": "Ancres",
|
||||
"Insert link": "Ins\u00e9rer un lien",
|
||||
"Link": "Lien",
|
||||
"New window": "Nouvelle fen\u00eatre",
|
||||
"None": "n\/a",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
|
||||
"Paste or type a link": "Coller ou taper un lien",
|
||||
"Target": "Cible",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
|
||||
"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
|
||||
"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
|
||||
"Media": "M\u00e9dia",
|
||||
"Alternative source": "Source alternative",
|
||||
"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
|
||||
"Insert video": "Ins\u00e9rer une vid\u00e9o",
|
||||
"Poster": "Publier",
|
||||
"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
|
||||
"Embed": "Int\u00e9grer",
|
||||
"Nonbreaking space": "Espace ins\u00e9cable",
|
||||
"Page break": "Saut de page",
|
||||
"Paste as text": "Coller comme texte",
|
||||
"Preview": "Pr\u00e9visualiser",
|
||||
"Print": "Imprimer",
|
||||
"Save": "Enregistrer",
|
||||
"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
|
||||
"Replace": "Remplacer",
|
||||
"Next": "Suiv",
|
||||
"Whole words": "Mots entiers",
|
||||
"Find and replace": "Trouver et remplacer",
|
||||
"Replace with": "Remplacer par",
|
||||
"Find": "Chercher",
|
||||
"Replace all": "Tout remplacer",
|
||||
"Match case": "Respecter la casse",
|
||||
"Prev": "Pr\u00e9c ",
|
||||
"Spellcheck": "V\u00e9rification orthographique",
|
||||
"Finish": "Finie",
|
||||
"Ignore all": "Tout ignorer",
|
||||
"Ignore": "Ignorer",
|
||||
"Add to Dictionary": "Ajouter au dictionnaire",
|
||||
"Insert row before": "Ins\u00e9rer une ligne avant",
|
||||
"Rows": "Lignes",
|
||||
"Height": "Hauteur",
|
||||
"Paste row after": "Coller la ligne apr\u00e8s",
|
||||
"Alignment": "Alignement",
|
||||
"Border color": "Couleur de la bordure",
|
||||
"Column group": "Groupe de colonnes",
|
||||
"Row": "Ligne",
|
||||
"Insert column before": "Ins\u00e9rer une colonne avant",
|
||||
"Split cell": "Diviser la cellule",
|
||||
"Cell padding": "Espacement interne cellule",
|
||||
"Cell spacing": "Espacement inter-cellulles",
|
||||
"Row type": "Type de ligne",
|
||||
"Insert table": "Ins\u00e9rer un tableau",
|
||||
"Body": "Corps",
|
||||
"Caption": "Titre",
|
||||
"Footer": "Pied",
|
||||
"Delete row": "Effacer la ligne",
|
||||
"Paste row before": "Coller la ligne avant",
|
||||
"Scope": "Etendue",
|
||||
"Delete table": "Supprimer le tableau",
|
||||
"H Align": "Alignement H",
|
||||
"Top": "Haut",
|
||||
"Header cell": "Cellule d'en-t\u00eate",
|
||||
"Column": "Colonne",
|
||||
"Row group": "Groupe de lignes",
|
||||
"Cell": "Cellule",
|
||||
"Middle": "Milieu",
|
||||
"Cell type": "Type de cellule",
|
||||
"Copy row": "Copier la ligne",
|
||||
"Row properties": "Propri\u00e9t\u00e9s de la ligne",
|
||||
"Table properties": "Propri\u00e9t\u00e9s du tableau",
|
||||
"Bottom": "Bas",
|
||||
"V Align": "Alignement V",
|
||||
"Header": "En-t\u00eate",
|
||||
"Right": "Droite",
|
||||
"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
|
||||
"Cols": "Colonnes",
|
||||
"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
|
||||
"Width": "Largeur",
|
||||
"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
|
||||
"Left": "Gauche",
|
||||
"Cut row": "Couper la ligne",
|
||||
"Delete column": "Effacer la colonne",
|
||||
"Center": "Centr\u00e9",
|
||||
"Merge cells": "Fusionner les cellules",
|
||||
"Insert template": "Ajouter un th\u00e8me",
|
||||
"Templates": "Th\u00e8mes",
|
||||
"Background color": "Couleur d'arri\u00e8re-plan",
|
||||
"Custom...": "Personnalis\u00e9...",
|
||||
"Custom color": "Couleur personnalis\u00e9e",
|
||||
"No color": "Aucune couleur",
|
||||
"Text color": "Couleur du texte",
|
||||
"Table of Contents": "Table des mati\u00e8res",
|
||||
"Show blocks": "Afficher les blocs",
|
||||
"Show invisible characters": "Afficher les caract\u00e8res invisibles",
|
||||
"Words: {0}": "Mots : {0}",
|
||||
"Insert": "Ins\u00e9rer",
|
||||
"File": "Fichier",
|
||||
"Edit": "Editer",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
|
||||
"Tools": "Outils",
|
||||
"View": "Voir",
|
||||
"Table": "Tableau",
|
||||
"Format": "Format"
|
||||
});
|
3
avisstage/static/js/tinymce/langs/readme.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
This is where language files should be placed.
|
||||
|
||||
Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
|
504
avisstage/static/js/tinymce/license.txt
Normal file
|
@ -0,0 +1,504 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
1
avisstage/static/js/tinymce/plugins/advlist/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("advlist",function(e){function t(t){return e.$.contains(e.getBody(),t)}function n(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)&&t(e)}function r(e,t){var n=[];return t&&tinymce.each(t.split(/[ ,]/),function(e){n.push({text:e.replace(/\-/g," ").replace(/\b\w/g,function(e){return e.toUpperCase()}),data:"default"==e?"":e})}),n}function i(t,n){e.undoManager.transact(function(){var r,i=e.dom,o=e.selection;if(r=i.getParent(o.getNode(),"ol,ul"),!r||r.nodeName!=t||n===!1){var a={"list-style-type":n?n:""};e.execCommand("UL"==t?"InsertUnorderedList":"InsertOrderedList",!1,a)}r=i.getParent(o.getNode(),"ol,ul"),r&&tinymce.util.Tools.each(i.select("ol,ul",r).concat([r]),function(e){e.nodeName!==t&&n!==!1&&(e=i.rename(e,t)),i.setStyle(e,"listStyleType",n?n:null),e.removeAttribute("data-mce-style")}),e.focus()})}function o(t){var n=e.dom.getStyle(e.dom.getParent(e.selection.getNode(),"ol,ul"),"listStyleType")||"";t.control.items().each(function(e){e.active(e.settings.data===n)})}var a,s,l=function(e,t){var n=e.settings.plugins?e.settings.plugins:"";return tinymce.util.Tools.inArray(n.split(/[ ,]/),t)!==-1};a=r("OL",e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),s=r("UL",e.getParam("advlist_bullet_styles","default,circle,disc,square"));var u=function(t){return function(){var r=this;e.on("NodeChange",function(e){var i=tinymce.util.Tools.grep(e.parents,n);r.active(i.length>0&&i[0].nodeName===t)})}};l(e,"lists")&&(e.addCommand("ApplyUnorderedListStyle",function(e,t){i("UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(e,t){i("OL",t["list-style-type"])}),e.addButton("numlist",{type:a.length>0?"splitbutton":"button",tooltip:"Numbered list",menu:a,onPostRender:u("OL"),onshow:o,onselect:function(e){i("OL",e.control.settings.data)},onclick:function(){i("OL",!1)}}),e.addButton("bullist",{type:s.length>0?"splitbutton":"button",tooltip:"Bullet list",onPostRender:u("UL"),menu:s,onshow:o,onselect:function(e){i("UL",e.control.settings.data)},onclick:function(){i("UL",!1)}}))});
|
1
avisstage/static/js/tinymce/plugins/anchor/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("anchor",function(e){var t=function(e){return!e.attr("href")&&(e.attr("id")||e.attr("name"))&&!e.firstChild},n=function(e){return function(n){for(var r=0;r<n.length;r++)t(n[r])&&n[r].attr("contenteditable",e)}},r=function(e){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(e)},i=function(){var t=e.selection.getNode(),n="A"==t.tagName&&""===e.dom.getAttrib(t,"href"),i="";n&&(i=t.id||t.name||""),e.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:i},onsubmit:function(i){var o=i.data.id;return r(o)?void(n?(t.removeAttribute("name"),t.id=o):(e.selection.collapse(!0),e.execCommand("mceInsertContent",!1,e.dom.createHTML("a",{id:o})))):(i.preventDefault(),void e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."))}})};tinymce.Env.ceFalse&&e.on("PreInit",function(){e.parser.addNodeFilter("a",n("false")),e.serializer.addNodeFilter("a",n(null))}),e.addCommand("mceAnchor",i),e.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:i,stateSelector:"a:not([href])"}),e.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:i})});
|
1
avisstage/static/js/tinymce/plugins/autolink/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("autolink",function(e){function t(e){i(e,-1,"(",!0)}function n(e){i(e,0,"",!0)}function r(e){i(e,-1,"",!1)}function i(e,t,n){function r(e,t){if(t<0&&(t=0),3==e.nodeType){var n=e.data.length;t>n&&(t=n)}return t}function i(e,t){1!=e.nodeType||e.hasChildNodes()?s.setStart(e,r(e,t)):s.setStartBefore(e)}function o(e,t){1!=e.nodeType||e.hasChildNodes()?s.setEnd(e,r(e,t)):s.setEndAfter(e)}var s,l,u,c,d,f,p,h,m,g;if("A"!=e.selection.getNode().tagName){if(s=e.selection.getRng(!0).cloneRange(),s.startOffset<5){if(h=s.endContainer.previousSibling,!h){if(!s.endContainer.firstChild||!s.endContainer.firstChild.nextSibling)return;h=s.endContainer.firstChild.nextSibling}if(m=h.length,i(h,m),o(h,m),s.endOffset<5)return;l=s.endOffset,c=h}else{if(c=s.endContainer,3!=c.nodeType&&c.firstChild){for(;3!=c.nodeType&&c.firstChild;)c=c.firstChild;3==c.nodeType&&(i(c,0),o(c,c.nodeValue.length))}l=1==s.endOffset?2:s.endOffset-1-t}u=l;do i(c,l>=2?l-2:0),o(c,l>=1?l-1:0),l-=1,g=s.toString();while(" "!=g&&""!==g&&160!=g.charCodeAt(0)&&l-2>=0&&g!=n);s.toString()==n||160==s.toString().charCodeAt(0)?(i(c,l),o(c,u),l+=1):0===s.startOffset?(i(c,0),o(c,u)):(i(c,l),o(c,u)),f=s.toString(),"."==f.charAt(f.length-1)&&o(c,u-1),f=s.toString(),p=f.match(a),p&&("www."==p[1]?p[1]="http://www.":/@$/.test(p[1])&&!/^mailto:/.test(p[1])&&(p[1]="mailto:"+p[1]),d=e.selection.getBookmark(),e.selection.setRng(s),e.execCommand("createlink",!1,p[1]+p[2]),e.settings.default_link_target&&e.dom.setAttrib(e.selection.getNode(),"target",e.settings.default_link_target),e.selection.moveToBookmark(d),e.nodeChanged())}}var o,a=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return e.settings.autolink_pattern&&(a=e.settings.autolink_pattern),e.on("keydown",function(t){if(13==t.keyCode)return r(e)}),tinymce.Env.ie?void e.on("focus",function(){if(!o){o=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(e.on("keypress",function(n){if(41==n.keyCode)return t(e)}),void e.on("keyup",function(t){if(32==t.keyCode)return n(e)}))});
|
1
avisstage/static/js/tinymce/plugins/autoresize/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("autoresize",function(e){function t(){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}function n(r){var a,s,l,u,c,d,f,p,h,m,g,v,y=tinymce.DOM;if(s=e.getDoc()){if(l=s.body,u=s.documentElement,c=i.autoresize_min_height,!l||r&&"setcontent"===r.type&&r.initial||t())return void(l&&u&&(l.style.overflowY="auto",u.style.overflowY="auto"));f=e.dom.getStyle(l,"margin-top",!0),p=e.dom.getStyle(l,"margin-bottom",!0),h=e.dom.getStyle(l,"padding-top",!0),m=e.dom.getStyle(l,"padding-bottom",!0),g=e.dom.getStyle(l,"border-top-width",!0),v=e.dom.getStyle(l,"border-bottom-width",!0),d=l.offsetHeight+parseInt(f,10)+parseInt(p,10)+parseInt(h,10)+parseInt(m,10)+parseInt(g,10)+parseInt(v,10),(isNaN(d)||d<=0)&&(d=tinymce.Env.ie?l.scrollHeight:tinymce.Env.webkit&&0===l.clientHeight?0:l.offsetHeight),d>i.autoresize_min_height&&(c=d),i.autoresize_max_height&&d>i.autoresize_max_height?(c=i.autoresize_max_height,l.style.overflowY="auto",u.style.overflowY="auto"):(l.style.overflowY="hidden",u.style.overflowY="hidden",l.scrollTop=0),c!==o&&(a=c-o,y.setStyle(e.iframeElement,"height",c+"px"),o=c,tinymce.isWebKit&&a<0&&n(r))}}function r(t,i,o){tinymce.util.Delay.setEditorTimeout(e,function(){n({}),t--?r(t,i,o):o&&o()},i)}var i=e.settings,o=0;e.settings.inline||(i.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),i.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){var t,n;t=e.getParam("autoresize_overflow_padding",1),n=e.getParam("autoresize_bottom_margin",50),t!==!1&&e.dom.setStyles(e.getBody(),{paddingLeft:t,paddingRight:t}),n!==!1&&e.dom.setStyles(e.getBody(),{paddingBottom:n})}),e.on("nodechange setcontent keyup FullscreenStateChanged",n),e.getParam("autoresize_on_init",!0)&&e.on("init",function(){r(20,100,function(){r(5,1e3)})}),e.addCommand("mceAutoResize",n))});
|
1
avisstage/static/js/tinymce/plugins/autosave/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce._beforeUnloadHandler=function(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e},tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(p.getItem(c+"time"),10)||0;return!((new Date).getTime()-e>f.autosave_retention)||(r(!1),!1)}function r(t){p.removeItem(c+"draft"),p.removeItem(c+"time"),t!==!1&&e.fire("RemoveDraft")}function i(){!u()&&e.isDirty()&&(p.setItem(c+"draft",e.getContent({format:"raw",no_events:!0})),p.setItem(c+"time",(new Date).getTime()),e.fire("StoreDraft"))}function o(){n()&&(e.setContent(p.getItem(c+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function a(){d||(setInterval(function(){e.removed||i()},f.autosave_interval),d=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),a()}function l(){e.undoManager.beforeChange(),o(),r(),e.undoManager.add()}function u(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+"[^>]*>((\xa0| |[ \t]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var c,d,f=e.settings,p=tinymce.util.LocalStorage;c=f.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",c=c.replace(/\{path\}/g,document.location.pathname),c=c.replace(/\{query\}/g,document.location.search),c=c.replace(/\{id\}/g,e.id),f.autosave_interval=t(f.autosave_interval,"30s"),f.autosave_retention=t(f.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:l,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:l,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&u()&&o()}),e.on("saveContent",function(){r()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=n,this.storeDraft=i,this.restoreDraft=o,this.removeDraft=r,this.isEmpty=u});
|
1
avisstage/static/js/tinymce/plugins/bbcode/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(e){var t=this,n=e.getParam("bbcode_dialect","punbb").toLowerCase();e.on("beforeSetContent",function(e){e.content=t["_"+n+"_bbcode2html"](e.content)}),e.on("postProcess",function(e){e.set&&(e.content=t["_"+n+"_bbcode2html"](e.content)),e.get&&(e.content=t["_"+n+"_html2bbcode"](e.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Ephox Corp",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(e){function t(t,n){e=e.replace(t,n)}return e=tinymce.trim(e),t(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),t(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),t(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),t(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),t(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),t(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),t(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),t(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),t(/<font>(.*?)<\/font>/gi,"$1"),t(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),t(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),t(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),t(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),t(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),t(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),t(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),t(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),t(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),t(/<\/(strong|b)>/gi,"[/b]"),t(/<(strong|b)>/gi,"[b]"),t(/<\/(em|i)>/gi,"[/i]"),t(/<(em|i)>/gi,"[i]"),t(/<\/u>/gi,"[/u]"),t(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),t(/<u>/gi,"[u]"),t(/<blockquote[^>]*>/gi,"[quote]"),t(/<\/blockquote>/gi,"[/quote]"),t(/<br \/>/gi,"\n"),t(/<br\/>/gi,"\n"),t(/<br>/gi,"\n"),t(/<p>/gi,""),t(/<\/p>/gi,"\n"),t(/ |\u00a0/gi," "),t(/"/gi,'"'),t(/</gi,"<"),t(/>/gi,">"),t(/&/gi,"&"),e},_punbb_bbcode2html:function(e){function t(t,n){e=e.replace(t,n)}return e=tinymce.trim(e),t(/\n/gi,"<br />"),t(/\[b\]/gi,"<strong>"),t(/\[\/b\]/gi,"</strong>"),t(/\[i\]/gi,"<em>"),t(/\[\/i\]/gi,"</em>"),t(/\[u\]/gi,"<u>"),t(/\[\/u\]/gi,"</u>"),t(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),t(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),t(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),t(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),t(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span> '),t(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span> '),e}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}();
|
1
avisstage/static/js/tinymce/plugins/charmap/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/code/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("code",function(e){function t(){var t=e.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(t){e.focus(),e.undoManager.transact(function(){e.setContent(t.data.code)}),e.selection.setCursorLocation(),e.nodeChanged()}});t.find("#code").value(e.getContent({source_view:!0}))}e.addCommand("mceCodeEditor",t),e.addButton("code",{icon:"code",tooltip:"Source code",onclick:t}),e.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:t})});
|
138
avisstage/static/js/tinymce/plugins/codesample/css/prism.css
Normal file
|
@ -0,0 +1,138 @@
|
|||
/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection, code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
@media print {
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre) > code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #f5f2f0;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre) > code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #a67f59;
|
||||
background: hsla(0, 0%, 100%, .5);
|
||||
}
|
||||
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
|
||||
.token.function {
|
||||
color: #DD4A68;
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
||||
|
1
avisstage/static/js/tinymce/plugins/codesample/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/colorpicker/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("colorpicker",function(e){function t(t,n){function r(e){var t=new tinymce.util.Color(e),n=t.toRgb();o.fromJSON({r:n.r,g:n.g,b:n.b,hex:t.toHex().substr(1)}),i(t.toHex())}function i(e){o.find("#preview")[0].getEl().style.background=e}var o=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:n,onchange:function(){var e=this.rgb();o&&(o.find("#r").value(e.r),o.find("#g").value(e.g),o.find("#b").value(e.b),o.find("#hex").value(this.value().substr(1)),i(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,t,n=o.find("colorpicker")[0];return e=this.name(),t=this.value(),"hex"==e?(t="#"+t,r(t),void n.value(t)):(t={r:o.find("#r").value(),g:o.find("#g").value(),b:o.find("#b").value()},n.value(t),void r(t))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){t("#"+this.toJSON().hex)}});r(n)}e.settings.color_picker_callback||(e.settings.color_picker_callback=t)});
|
1
avisstage/static/js/tinymce/plugins/contextmenu/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("contextmenu",function(e){var t,n,r=e.settings.contextmenu_never_use_native,i=function(e){return e.ctrlKey&&!r},o=function(){return tinymce.Env.mac&&tinymce.Env.webkit},a=function(){return n===!0};return e.on("mousedown",function(t){o()&&2===t.button&&!i(t)&&e.selection.isCollapsed()&&e.once("contextmenu",function(t){e.selection.placeCaretAt(t.clientX,t.clientY)})}),e.on("contextmenu",function(r){var o;if(!i(r)){if(r.preventDefault(),o=e.settings.contextmenu||"link openlink image inserttable | cell row column deletetable",t)t.show();else{var a=[];tinymce.each(o.split(/[ ,]/),function(t){var n=e.menuItems[t];"|"==t&&(n={text:t}),n&&(n.shortcut="",a.push(n))});for(var s=0;s<a.length;s++)"|"==a[s].text&&(0!==s&&s!=a.length-1||a.splice(s,1));t=new tinymce.ui.Menu({items:a,context:"contextmenu",classes:"contextmenu"}).renderTo(),t.on("hide",function(e){e.control===this&&(n=!1)}),e.on("remove",function(){t.remove(),t=null})}var l={x:r.pageX,y:r.pageY};e.inline||(l=tinymce.DOM.getPos(e.getContentAreaContainer()),l.x+=r.clientX,l.y+=r.clientY),t.moveTo(l.x,l.y),n=!0}}),{isContextMenuVisible:a}});
|
1
avisstage/static/js/tinymce/plugins/directionality/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("directionality",function(e){function t(t){var n,r=e.dom,i=e.selection.getSelectedBlocks();i.length&&(n=r.getAttrib(i[0],"dir"),tinymce.each(i,function(e){r.getParent(e.parentNode,"*[dir='"+t+"']",r.getRoot())||(n!=t?r.setAttrib(e,"dir",t):r.setAttrib(e,"dir",null))}),e.nodeChanged())}function n(e){var t=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(n){t.push(n+"[dir="+e+"]")}),t.join(",")}e.addCommand("mceDirectionLTR",function(){t("ltr")}),e.addCommand("mceDirectionRTL",function(){t("rtl")}),e.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),e.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})});
|
After Width: | Height: | Size: 354 B |
BIN
avisstage/static/js/tinymce/plugins/emoticons/img/smiley-cry.gif
Normal file
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 342 B |
After Width: | Height: | Size: 340 B |
After Width: | Height: | Size: 336 B |
After Width: | Height: | Size: 338 B |
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 321 B |
After Width: | Height: | Size: 323 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 338 B |
After Width: | Height: | Size: 328 B |
After Width: | Height: | Size: 337 B |
After Width: | Height: | Size: 350 B |
After Width: | Height: | Size: 336 B |
1
avisstage/static/js/tinymce/plugins/emoticons/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("emoticons",function(e,t){function n(){var e;return e='<table role="list" class="mce-grid">',tinymce.each(r,function(n){e+="<tr>",tinymce.each(n,function(n){var r=t+"/img/smiley-"+n+".gif";e+='<td><a href="#" data-mce-url="'+r+'" data-mce-alt="'+n+'" tabindex="-1" role="option" aria-label="'+n+'"><img src="'+r+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),e+="</tr>"}),e+="</table>"}var r=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];e.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:n,onclick:function(t){var n=e.dom.getParent(t.target,"a");n&&(e.insertContent('<img src="'+n.getAttribute("data-mce-url")+'" alt="'+n.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})});
|
8
avisstage/static/js/tinymce/plugins/example/dialog.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<h3>Custom dialog</h3>
|
||||
Input some text: <input id="content">
|
||||
<button onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close window</button>
|
||||
</body>
|
||||
</html>
|
1
avisstage/static/js/tinymce/plugins/example/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("example",function(e,t){e.addButton("example",{text:"My button",icon:!1,onclick:function(){e.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(t){e.insertContent("Title: "+t.data.title)}})}}),e.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){e.windowManager.open({title:"TinyMCE site",url:t+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var t=e.windowManager.getWindows()[0];e.insertContent(t.getContentWindow().document.getElementById("content").value),t.close()}},{text:"Close",onclick:"close"}]})}})});
|
1
avisstage/static/js/tinymce/plugins/example_dependency/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("example_dependency",function(){},["example"]);
|
1
avisstage/static/js/tinymce/plugins/fullpage/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/fullscreen/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("fullscreen",function(e){function t(){var e,t,n=window,r=document,i=r.body;return i.offsetWidth&&(e=i.offsetWidth,t=i.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function n(){var e=tinymce.DOM.getViewPort();return{x:e.x,y:e.y}}function r(e){scrollTo(e.x,e.y)}function i(){function i(){f.setStyle(m,"height",t().h-(h.clientHeight-m.clientHeight))}var p,h,m,g,v=document.body,y=document.documentElement;d=!d,h=e.getContainer(),p=h.style,m=e.getContentAreaContainer().firstChild,g=m.style,d?(c=n(),o=g.width,a=g.height,g.width=g.height="100%",l=p.width,u=p.height,p.width=p.height="",f.addClass(v,"mce-fullscreen"),f.addClass(y,"mce-fullscreen"),f.addClass(h,"mce-fullscreen"),f.bind(window,"resize",i),i(),s=i):(g.width=o,g.height=a,l&&(p.width=l),u&&(p.height=u),f.removeClass(v,"mce-fullscreen"),f.removeClass(y,"mce-fullscreen"),f.removeClass(h,"mce-fullscreen"),f.unbind(window,"resize",s),r(c)),e.fire("FullscreenStateChanged",{state:d})}var o,a,s,l,u,c,d=!1,f=tinymce.DOM;if(!e.settings.inline)return e.on("init",function(){e.addShortcut("Ctrl+Shift+F","",i)}),e.on("remove",function(){s&&f.unbind(window,"resize",s)}),e.addCommand("mceFullScreen",i),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){i(),e.focus()},onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Shift+F",onClick:i,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return d}}});
|
1
avisstage/static/js/tinymce/plugins/hr/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("hr",function(e){e.addCommand("InsertHorizontalRule",function(){e.execCommand("mceInsertContent",!1,"<hr />")}),e.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),e.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});
|
1
avisstage/static/js/tinymce/plugins/image/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/imagetools/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/importcss/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("importcss",function(e){function t(e){var t=tinymce.Env.cacheSuffix;return"string"==typeof e&&(e=e.replace("?"+t,"").replace("&"+t,"")),e}function n(t){var n=e.settings,r=n.skin!==!1&&(n.skin||"lightgray");if(r){var i=n.skin_url;return i=i?e.documentBaseURI.toAbsolute(i):tinymce.baseURL+"/skins/"+r,t===i+"/content"+(e.inline?".inline":"")+".min.css"}return!1}function r(e){return"string"==typeof e?function(t){return t.indexOf(e)!==-1}:e instanceof RegExp?function(t){return e.test(t)}:e}function i(r,i){function o(e,r){var s,l=e.href;if(l=t(l),l&&i(l,r)&&!n(l)){p(e.imports,function(e){o(e,!0)});try{s=e.cssRules||e.rules}catch(e){}p(s,function(e){e.styleSheet?o(e.styleSheet,!0):e.selectorText&&p(e.selectorText.split(","),function(e){a.push(tinymce.trim(e))})})}}var a=[],s={};p(e.contentCSS,function(e){s[e]=!0}),i||(i=function(e,t){return t||s[e]});try{p(r.styleSheets,function(e){o(e)})}finally{}return a}function o(t){var n,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(r){var i=r[1],o=r[2].substr(1).split(".").join(" "),a=tinymce.makeMap("a,img");return r[1]?(n={title:t},e.schema.getTextBlockElements()[i]?n.block=i:e.schema.getBlockElements()[i]||a[i.toLowerCase()]?n.selector=i:n.inline=i):r[2]&&(n={inline:"span",title:t.substr(1),classes:o}),e.settings.importcss_merge_classes!==!1?n.classes=o:n.attributes={"class":o},n}}function a(e,t){return tinymce.util.Tools.grep(e,function(e){return!e.filter||e.filter(t)})}function s(e){return tinymce.util.Tools.map(e,function(e){return tinymce.util.Tools.extend({},e,{original:e,selectors:{},filter:r(e.filter),item:{text:e.title,menu:[]}})})}function l(e,t){return null===t||e.settings.importcss_exclusive!==!1}function u(t,n,r){return!(l(e,n)?t in r:t in n.selectors)}function c(t,n,r){l(e,n)?r[t]=!0:n.selectors[t]=!0}function d(t,n,r){var i,a=e.settings;return i=r&&r.selector_converter?r.selector_converter:a.importcss_selector_converter?a.importcss_selector_converter:o,i.call(t,n,r)}var f=this,p=tinymce.each;e.on("renderFormatsMenu",function(t){var n=e.settings,o={},l=r(n.importcss_selector_filter),h=t.control,m=s(n.importcss_groups),g=function(t,n){if(u(t,n,o)){c(t,n,o);var r=d(f,t,n);if(r){var i=r.name||tinymce.DOM.uniqueId();return e.formatter.register(i,r),tinymce.extend({},h.settings.itemDefaults,{text:r.title,format:i})}}return null};e.settings.importcss_append||h.items().remove(),p(i(t.doc||e.getDoc(),r(n.importcss_file_filter)),function(e){if(e.indexOf(".mce-")===-1&&(!l||l(e))){var t=a(m,e);if(t.length>0)tinymce.util.Tools.each(t,function(t){var n=g(e,t);n&&t.item.menu.push(n)});else{var n=g(e,null);n&&h.add(n)}}}),p(m,function(e){e.item.menu.length>0&&h.add(e.item)}),t.control.renderNew()}),f.convertSelectorToFormat=o});
|
1
avisstage/static/js/tinymce/plugins/insertdatetime/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("insertdatetime",function(e){function t(t,n){function r(e,t){if(e=""+e,e.length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}return n=n||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+n.getFullYear()),t=t.replace("%y",""+n.getYear()),t=t.replace("%m",r(n.getMonth()+1,2)),t=t.replace("%d",r(n.getDate(),2)),t=t.replace("%H",""+r(n.getHours(),2)),t=t.replace("%M",""+r(n.getMinutes(),2)),t=t.replace("%S",""+r(n.getSeconds(),2)),t=t.replace("%I",""+((n.getHours()+11)%12+1)),t=t.replace("%p",""+(n.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(l[n.getMonth()])),t=t.replace("%b",""+e.translate(s[n.getMonth()])),t=t.replace("%A",""+e.translate(a[n.getDay()])),t=t.replace("%a",""+e.translate(o[n.getDay()])),t=t.replace("%%","%")}function n(n){var r=t(n);if(e.settings.insertdatetime_element){var i;i=t(/%[HMSIp]/.test(n)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),r='<time datetime="'+i+'">'+r+"</time>";var o=e.dom.getParent(e.selection.getStart(),"time");if(o)return void e.dom.setOuterHTML(o,r)}e.insertContent(r)}var r,i,o="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),a="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),s="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),l="January February March April May June July August September October November December".split(" "),u=[];e.addCommand("mceInsertDate",function(){n(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){n(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){n(r||i)},menu:u}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(e){i||(i=e),u.push({text:t(e),onclick:function(){r=e,n(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Date/time",menu:u,context:"insert"})});
|
1
avisstage/static/js/tinymce/plugins/layer/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("layer",function(a){function b(a){do if(a.className&&a.className.indexOf("mceItemLayer")!=-1)return a;while(a=a.parentNode)}function c(b){var c=a.dom;tinymce.each(c.select("div,p",b),function(a){/^(absolute|relative|fixed)$/i.test(a.style.position)&&(a.hasVisual?c.addClass(a,"mceItemVisualAid"):c.removeClass(a,"mceItemVisualAid"),c.addClass(a,"mceItemLayer"))})}function d(c){var d,e,f=[],g=b(a.selection.getNode()),h=-1,i=-1;for(e=[],tinymce.walk(a.getBody(),function(a){1==a.nodeType&&/^(absolute|relative|static)$/i.test(a.style.position)&&e.push(a)},"childNodes"),d=0;d<e.length;d++)f[d]=e[d].style.zIndex?parseInt(e[d].style.zIndex,10):0,h<0&&e[d]==g&&(h=d);if(c<0){for(d=0;d<f.length;d++)if(f[d]<f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):f[h]>0&&(e[h].style.zIndex=f[h]-1)}else{for(d=0;d<f.length;d++)if(f[d]>f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):e[h].style.zIndex=f[h]+1}a.execCommand("mceRepaint")}function e(){var b=a.dom,c=b.getPos(b.getParent(a.selection.getNode(),"*")),d=a.getBody();a.dom.add(d,"div",{style:{position:"absolute",left:c.x,top:c.y>20?c.y:20,width:100,height:100},class:"mceItemVisualAid mceItemLayer"},a.selection.getContent()||a.getLang("layer.content")),tinymce.Env.ie&&b.setHTML(d,d.innerHTML)}function f(){var c=b(a.selection.getNode());c||(c=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")),c&&("absolute"==c.style.position.toLowerCase()?(a.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""}),a.dom.removeClass(c,"mceItemVisualAid"),a.dom.removeClass(c,"mceItemLayer")):(c.style.left||(c.style.left="20px"),c.style.top||(c.style.top="20px"),c.style.width||(c.style.width=c.width?c.width+"px":"100px"),c.style.height||(c.style.height=c.height?c.height+"px":"100px"),c.style.position="absolute",a.dom.setAttrib(c,"data-mce-style",""),a.addVisual(a.getBody())),a.execCommand("mceRepaint"),a.nodeChanged())}a.addCommand("mceInsertLayer",e),a.addCommand("mceMoveForward",function(){d(1)}),a.addCommand("mceMoveBackward",function(){d(-1)}),a.addCommand("mceMakeAbsolute",function(){f()}),a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),a.on("init",function(){tinymce.Env.ie&&a.getDoc().execCommand("2D-Position",!1,!0)}),a.on("mouseup",function(c){var d=b(c.target);d&&a.dom.setAttrib(d,"data-mce-style","")}),a.on("mousedown",function(c){var d,e=c.target,f=a.getDoc();tinymce.Env.gecko&&(b(e)?"on"!==f.designMode&&(f.designMode="on",e=f.body,d=e.parentNode,d.removeChild(e),d.appendChild(e)):"on"==f.designMode&&(f.designMode="off"))}),a.on("NodeChange",c)});
|
1
avisstage/static/js/tinymce/plugins/legacyoutput/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!function(e){e.PluginManager.add("legacyoutput",function(t,n,r){t.settings.inline_styles=!1,t.on("init",function(){var n="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",r=e.explode(t.settings.font_size_style_values),i=t.schema;t.formatter.register({alignleft:{selector:n,attributes:{align:"left"}},aligncenter:{selector:n,attributes:{align:"center"}},alignright:{selector:n,attributes:{align:"right"}},alignjustify:{selector:n,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return e.inArray(r,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){i.addValidElements(e+"[*]")}),i.getElementRule("font")||i.addValidElements("font[face|size|color|style]"),e.each(n.split(","),function(e){var t=i.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}),t.addButton("fontsizeselect",function(){var e=[],n="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",r=t.settings.fontsize_formats||n;return t.$.each(r.split(" "),function(t,n){var r=n,i=n,o=n.split("=");o.length>1&&(r=o[0],i=o[1]),e.push({text:r,value:i})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),n?e.value(n.size):e.value("")})},onclick:function(e){e.control.settings.value&&t.execCommand("FontSize",!1,e.control.settings.value)}}}),t.addButton("fontselect",function(){function e(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=e(t.settings.font_formats||n);return r.each(o,function(e,t){i.push({text:{raw:t[0]},value:t[1],textStyle:t[1].indexOf("dings")==-1?"font-family:"+t[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),n?e.value(n.face):e.value("")})},onselect:function(e){e.control.settings.value&&t.execCommand("FontName",!1,e.control.settings.value)}}})})}(tinymce);
|
1
avisstage/static/js/tinymce/plugins/link/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/lists/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/media/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/nonbreaking/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("nonbreaking",function(e){var t=e.getParam("nonbreaking_force_tab");if(e.addCommand("mceNonBreaking",function(){e.insertContent(e.plugins.visualchars&&e.plugins.visualchars.state?'<span class="mce-nbsp"> </span>':" "),e.dom.setAttrib(e.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),e.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),e.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),t){var n=+t>1?+t:3;e.on("keydown",function(t){if(9==t.keyCode){if(t.shiftKey)return;t.preventDefault();for(var r=0;r<n;r++)e.execCommand("mceNonBreaking")}})}});
|
1
avisstage/static/js/tinymce/plugins/noneditable/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("noneditable",function(e){function t(e){return function(t){return(" "+t.attr("class")+" ").indexOf(e)!==-1}}function n(t){function n(t){var n=arguments,r=n[n.length-2],i=r>0?a.charAt(r-1):"";if('"'===i)return t;if(">"===i){var o=a.lastIndexOf("<",r);if(o!==-1){var l=a.substring(o,r);if(l.indexOf('contenteditable="false"')!==-1)return t}}return'<span class="'+s+'" data-mce-content="'+e.dom.encode(n[0])+'">'+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"}var r=o.length,a=t.content,s=tinymce.trim(i);if("raw"!=t.format){for(;r--;)a=a.replace(o[r],n);t.content=a}}var r,i,o,a="contenteditable";r=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",i=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";var s=t(r),l=t(i);o=e.getParam("noneditable_regexp"),o&&!o.length&&(o=[o]),e.on("PreInit",function(){o&&e.on("BeforeSetContent",n),e.parser.addAttributeFilter("class",function(e){for(var t,n=e.length;n--;)t=e[n],s(t)?t.attr(a,"true"):l(t)&&t.attr(a,"false")}),e.serializer.addAttributeFilter(a,function(e){for(var t,n=e.length;n--;)t=e[n],(s(t)||l(t))&&(o&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):t.attr(a,null))})})});
|
1
avisstage/static/js/tinymce/plugins/pagebreak/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("pagebreak",function(e){var t="mce-pagebreak",n=e.getParam("pagebreak_separator","<!-- pagebreak -->"),r=new RegExp(n.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),i='<img src="'+tinymce.Env.transparentSrc+'" class="'+t+'" data-mce-resize="false" data-mce-placeholder />';e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("<p>"+i+"</p>"):e.insertContent(i)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(n){"IMG"==n.target.nodeName&&e.dom.hasClass(n.target,t)&&(n.name="pagebreak")}),e.on("click",function(n){n=n.target,"IMG"===n.nodeName&&e.dom.hasClass(n,t)&&e.selection.select(n)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(r,i)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(t){for(var r,i,o=t.length;o--;)if(r=t[o],i=r.attr("class"),i&&i.indexOf("mce-pagebreak")!==-1){var a=r.parent;if(e.schema.getBlockElements()[a.name]&&e.settings.pagebreak_split_block){a.type=3,a.value=n,a.raw=!0,r.remove();continue}r.type=3,r.value=n,r.raw=!0}})})});
|
1
avisstage/static/js/tinymce/plugins/paste/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/preview/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("preview",function(e){var t=e.settings,n=!tinymce.Env.ie;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(n?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var r,i="";i+='<base href="'+e.documentBaseURI.getURI()+'">',tinymce.each(e.contentCSS,function(t){i+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var o=t.body_id||"tinymce";o.indexOf("=")!=-1&&(o=e.getParam("body_id","","hash"),o=o[e.id]||o);var a=t.body_class||"";a.indexOf("=")!=-1&&(a=e.getParam("body_class","","hash"),a=a[e.id]||"");var s='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A") {e.preventDefault();}}}, false);</script> ',l=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";if(r="<!DOCTYPE html><html><head>"+i+'</head><body id="'+o+'" class="mce-content-body '+a+'"'+l+">"+e.getContent()+s+"</body></html>",n)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(r);else{var u=this.getEl("body").firstChild.contentWindow.document;u.open(),u.write(r),u.close()}}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});
|
1
avisstage/static/js/tinymce/plugins/print/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("print",function(e){e.addCommand("mcePrint",function(){e.getWin().print()}),e.addButton("print",{title:"Print",cmd:"mcePrint"}),e.addShortcut("Meta+P","","mcePrint"),e.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})});
|
1
avisstage/static/js/tinymce/plugins/save/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("save",function(e){function t(){var t;if(t=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty())return tinymce.triggerSave(),e.getParam("save_onsavecallback")?(e.execCallback("save_onsavecallback",e),void e.nodeChanged()):void(t?(e.setDirty(!1),t.onsubmit&&!t.onsubmit()||("function"==typeof t.submit?t.submit():n(e.translate("Error: Form submit field collision."))),e.nodeChanged()):n(e.translate("Error: No form element found.")))}function n(t){e.notificationManager.open({text:t,type:"error"})}function r(){var t=tinymce.trim(e.startContent);return e.getParam("save_oncancelcallback")?void e.execCallback("save_oncancelcallback",e):(e.setContent(t),e.undoManager.clear(),void e.nodeChanged())}function i(){var t=this;e.on("nodeChange dirty",function(){t.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",t),e.addCommand("mceCancel",r),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:i}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:i}),e.addShortcut("Meta+S","","mceSave")});
|
1
avisstage/static/js/tinymce/plugins/searchreplace/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/spellchecker/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/tabfocus/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("tabfocus",function(e){function t(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function n(t){function n(n){function o(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&o(e.parentNode)}function l(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&tinymce.get(t.id)&&e.tabIndex!=-1&&o(e)}if(s=r.select(":input:enabled,*[tabindex]:not(iframe)"),i(s,function(t,n){if(t.id==e.id)return a=n,!1}),n>0){for(u=a+1;u<s.length;u++)if(l(s[u]))return s[u]}else for(u=a-1;u>=0;u--)if(l(s[u]))return s[u];return null}var a,s,l,u;if(!(9!==t.keyCode||t.ctrlKey||t.altKey||t.metaKey||t.isDefaultPrevented())&&(l=o(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==l.length&&(l[1]=l[0],l[0]=":prev"),s=t.shiftKey?":prev"==l[0]?n(-1):r.get(l[0]):":next"==l[1]?n(1):r.get(l[1]))){var c=tinymce.get(s.id||s.name);s.id&&c?c.focus():tinymce.util.Delay.setTimeout(function(){tinymce.Env.webkit||window.focus(),s.focus()},10),t.preventDefault()}}var r=tinymce.DOM,i=tinymce.each,o=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null),e.on("keyup",t),tinymce.Env.gecko?e.on("keypress keydown",n):e.on("keydown",n)})});
|
2
avisstage/static/js/tinymce/plugins/table/plugin.min.js
vendored
Normal file
1
avisstage/static/js/tinymce/plugins/template/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("template",function(e){function t(t){return function(){var n=e.settings.templates;return"function"==typeof n?void n(t):void("string"==typeof n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(n))}}function n(t){function n(t){function n(t){if(t.indexOf("<html>")==-1){var n="";tinymce.each(e.contentCSS,function(t){n+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var i=e.settings.body_class||"";i.indexOf("=")!=-1&&(i=e.getParam("body_class","","hash"),i=i[e.id]||""),t="<!DOCTYPE html><html><head>"+n+'</head><body class="'+i+'">'+t+"</body></html>"}t=o(t,"template_preview_replace_values");var a=r.find("iframe")[0].getEl().contentWindow.document;a.open(),a.write(t),a.close()}var a=t.control.value();a.url?tinymce.util.XHR.send({url:a.url,success:function(e){i=e,n(i)}}):(i=a.content,n(i)),r.find("#description")[0].text(t.control.value().description)}var r,i,s=[];if(!t||0===t.length){var l=e.translate("No templates defined.");return void e.notificationManager.open({text:l,type:"info"})}tinymce.each(t,function(e){s.push({selected:!s.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),r=e.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:s,onselect:n}}]},{type:"label",name:"description",label:"Description",text:"\xa0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){a(!1,i)},minWidth:Math.min(tinymce.DOM.getViewPort().w,e.getParam("template_popup_width",600)),minHeight:Math.min(tinymce.DOM.getViewPort().h,e.getParam("template_popup_height",500))}),r.find("listbox")[0].fire("select")}function r(t,n){function r(e,t){if(e=""+e,e.length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}var i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),a="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),s="January February March April May June July August September October November December".split(" ");return n=n||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+n.getFullYear()),t=t.replace("%y",""+n.getYear()),t=t.replace("%m",r(n.getMonth()+1,2)),t=t.replace("%d",r(n.getDate(),2)),t=t.replace("%H",""+r(n.getHours(),2)),t=t.replace("%M",""+r(n.getMinutes(),2)),t=t.replace("%S",""+r(n.getSeconds(),2)),t=t.replace("%I",""+((n.getHours()+11)%12+1)),t=t.replace("%p",""+(n.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(s[n.getMonth()])),t=t.replace("%b",""+e.translate(a[n.getMonth()])),t=t.replace("%A",""+e.translate(o[n.getDay()])),t=t.replace("%a",""+e.translate(i[n.getDay()])),t=t.replace("%%","%")}function i(t){var n=e.dom,r=e.getParam("template_replace_values");s(n.select("*",t),function(e){s(r,function(t,i){n.hasClass(e,i)&&"function"==typeof r[i]&&r[i](e)})})}function o(t,n){return s(e.getParam(n),function(e,n){"function"==typeof e&&(e=e(n)),t=t.replace(new RegExp("\\{\\$"+n+"\\}","g"),e)}),t}function a(t,n){function a(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}var l,u,c=e.dom,d=e.selection.getContent();n=o(n,"template_replace_values"),l=c.create("div",null,n),u=c.select(".mceTmpl",l),u&&u.length>0&&(l=c.create("div",null),l.appendChild(u[0].cloneNode(!0))),s(c.select("*",l),function(t){a(t,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(t.innerHTML=r(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))),a(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=r(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))),a(t,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(t.innerHTML=d)}),i(l),e.execCommand("mceInsertContent",!1,l.innerHTML),e.addVisual()}var s=tinymce.each;e.addCommand("mceInsertTemplate",a),e.addButton("template",{title:"Insert template",onclick:t(n)}),e.addMenuItem("template",{text:"Template",onclick:t(n),context:"insert"}),e.on("PreProcess",function(t){var n=e.dom;s(n.select("div",t.node),function(t){n.hasClass(t,"mceTmpl")&&(s(n.select("*",t),function(t){n.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=r(e.getParam("template_mdate_format",e.getLang("template.mdate_format"))))}),i(t))})})});
|
1
avisstage/static/js/tinymce/plugins/textcolor/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("textcolor",function(e){function t(t){var n;return e.dom.getParents(e.selection.getStart(),function(e){var r;(r=e.style["forecolor"==t?"color":"background-color"])&&(n=r)}),n}function n(t){var n,r,i=[];for(r=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],r=e.settings.textcolor_map||r,r=e.settings[t+"_map"]||r,n=0;n<r.length;n+=2)i.push({text:r[n+1],color:"#"+r[n]});return i}function r(){function t(e,t){var n="transparent"==e;return'<td class="mce-grid-cell'+(n?" mce-colorbtn-trans":"")+'"><div id="'+h+"-"+m++ +'" data-mce-color="'+(e?e:"")+'" role="option" tabIndex="-1" style="'+(e?"background-color: "+e:"")+'" title="'+tinymce.translate(t)+'">'+(n?"×":"")+"</div></td>"}var r,i,o,a,s,c,d,f,p=this,h=p._id,m=0;for(f=p.settings.origin,r=n(f),r.push({text:tinymce.translate("No color"),color:"transparent"}),o='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',a=r.length-1,c=0;c<u[f];c++){for(o+="<tr>",s=0;s<l[f];s++)d=c*l[f]+s,d>a?o+="<td></td>":(i=r[d],o+=t(i.color,i.text));o+="</tr>"}if(e.settings.color_picker_callback){for(o+='<tr><td colspan="'+l[f]+'" class="mce-custom-color-btn"><div id="'+h+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+h+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",o+="<tr>",s=0;s<l[f];s++)o+=t("","Custom color");o+="</tr>"}return o+="</tbody></table>"}function i(t,n){e.undoManager.transact(function(){e.focus(),e.formatter.apply(t,{value:n}),e.nodeChanged()})}function o(t){e.undoManager.transact(function(){e.focus(),e.formatter.remove(t,{value:null},null,!0),e.nodeChanged()})}function a(n){function r(e){d.hidePanel(),d.color(e),i(d.settings.format,e)}function a(){d.hidePanel(),d.resetColor(),o(d.settings.format)}function s(e,t){e.style.background=t,e.setAttribute("data-mce-color",t)}var u,c,d=this.parent();c=d.settings.origin,tinymce.DOM.getParent(n.target,".mce-custom-color-btn")&&(d.hidePanel(),e.settings.color_picker_callback.call(e,function(e){var t,n,i,o=d.panel.getEl().getElementsByTagName("table")[0];for(t=tinymce.map(o.rows[o.rows.length-1].childNodes,function(e){return e.firstChild}),i=0;i<t.length&&(n=t[i],n.getAttribute("data-mce-color"));i++);if(i==l[c])for(i=0;i<l[c]-1;i++)s(t[i],t[i+1].getAttribute("data-mce-color"));s(n,e),r(e)},t(d.settings.format))),u=n.target.getAttribute("data-mce-color"),u?(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),n.target.setAttribute("aria-selected",!0),this.lastId=n.target.id,"transparent"==u?a():r(u)):null!==u&&d.hidePanel()}function s(){var e=this;e._color?i(e.settings.format,e._color):o(e.settings.format)}var l,u;u={forecolor:e.settings.forecolor_rows||e.settings.textcolor_rows||5,backcolor:e.settings.backcolor_rows||e.settings.textcolor_rows||5},l={forecolor:e.settings.forecolor_cols||e.settings.textcolor_cols||8,backcolor:e.settings.backcolor_cols||e.settings.textcolor_cols||8},e.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{origin:"forecolor",role:"application",ariaRemember:!0,html:r,onclick:a},onclick:s}),e.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{origin:"backcolor",role:"application",ariaRemember:!0,html:r,onclick:a},onclick:s})});
|
1
avisstage/static/js/tinymce/plugins/textpattern/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("textpattern",function(e){function t(){return u&&(l.sort(function(e,t){return e.start.length>t.start.length?-1:e.start.length<t.start.length?1:0}),u=!1),l}function n(e){for(var n=t(),r=0;r<n.length;r++)if(0===e.indexOf(n[r].start)&&(!n[r].end||e.lastIndexOf(n[r].end)==e.length-n[r].end.length))return n[r]}function r(e,n,r){var i,o,a;for(i=t(),a=0;a<i.length;a++)if(o=i[a],o.end&&e.substr(n-o.end.length-r,o.end.length)==o.end)return o}function i(t){function i(){l=l.splitText(c),l.splitText(u-c-h),l.deleteData(0,p.start.length),l.deleteData(l.data.length-p.end.length,p.end.length)}var o,a,s,l,u,c,d,f,p,h,m;if(o=e.selection,a=e.dom,o.isCollapsed()&&(s=o.getRng(!0),l=s.startContainer,u=s.startOffset,d=l.data,h=t?1:0,3==l.nodeType&&(p=r(d,u,h),p&&(c=Math.max(0,u-h),c=d.lastIndexOf(p.start,c-p.end.length-1),c!==-1&&(f=a.createRng(),f.setStart(l,c),f.setEnd(l,u-h),p=n(f.toString()),p&&p.end&&!(l.data.length<=p.start.length+p.end.length))))))return m=e.formatter.get(p.format),m&&m[0].inline?(i(),e.formatter.apply(p.format,{},l),l):void 0}function o(){var t,r,i,o,a,s,l,u,c,d,f;if(t=e.selection,r=e.dom,t.isCollapsed()&&(l=r.getParent(t.getStart(),"p"))){for(c=new tinymce.dom.TreeWalker(l,l);a=c.next();)if(3==a.nodeType){o=a;break}if(o){if(u=n(o.data),!u)return;if(d=t.getRng(!0),i=d.startContainer,f=d.startOffset,o==i&&(f=Math.max(0,f-u.start.length)),tinymce.trim(o.data).length==u.start.length)return;u.format&&(s=e.formatter.get(u.format),s&&s[0].block&&(o.deleteData(0,u.start.length),e.formatter.apply(u.format,{},o),d.setStart(i,f),d.collapse(!0),t.setRng(d))),u.cmd&&e.undoManager.transact(function(){o.deleteData(0,u.start.length),e.execCommand(u.cmd)})}}}function a(){var t,n;n=i(),n&&(t=e.dom.createRng(),t.setStart(n,n.data.length),t.setEnd(n,n.data.length),e.selection.setRng(t)),o()}function s(){var t,n,r,o,a;t=i(!0),t&&(a=e.dom,n=t.data.slice(-1),/[\u00a0 ]/.test(n)&&(t.deleteData(t.data.length-1,1),r=a.doc.createTextNode(n),t.nextSibling?a.insertAfter(r,t.nextSibling):t.parentNode.appendChild(r),o=a.createRng(),o.setStart(r,1),o.setEnd(r,1),e.selection.setRng(o)))}var l,u=!0;l=e.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],e.on("keydown",function(e){13!=e.keyCode||tinymce.util.VK.modifierPressed(e)||a()},!0),e.on("keyup",function(e){32!=e.keyCode||tinymce.util.VK.modifierPressed(e)||s()}),this.getPatterns=t,this.setPatterns=function(e){l=e,u=!0}});
|
1
avisstage/static/js/tinymce/plugins/toc/plugin.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tinymce.PluginManager.add("toc",function(e){function t(t){return e.schema.isValidChild("div",t)}function n(t){return t&&e.dom.is(t,"."+d.className)&&e.getBody().contains(t)}function r(){var t=this;t.disabled(e.readonly||!o()),e.on("LoadContent SetContent change",function(){t.disabled(e.readonly||!o())})}function i(e){var t,n=[];for(t=1;t<=e;t++)n.push("h"+t);return n.join(",")}function o(){return!(!d||!a(d).length)}function a(t){var n=i(t.depth),r=f(n);return r.length&&/^h[1-9]$/i.test(t.headerTag)&&(r=r.filter(function(n,r){return!e.dom.hasClass(r.parentNode,t.className)})),tinymce.map(r,function(e){return e.id||(e.id=m()),{id:e.id,level:parseInt(e.nodeName.replace(/^H/i,""),10),title:f.text(e)}})}function s(e){var t,n=9;for(t=0;t<e.length;t++)if(e[t].level<n&&(n=e[t].level),1==n)return n;return n}function l(t,n){var r="<"+t+' contenteditable="true">',i="</"+t+">";return r+e.dom.encode(n)+i}function u(e){var t=c(e);return'<div class="'+e.className+'" contenteditable="false">'+t+"</div>"}function c(e){var t,n,r,i,o="",u=a(e),c=s(u)-1;if(!u.length)return"";for(o+=l(e.headerTag,tinymce.translate("Table of Contents")),t=0;t<u.length;t++){if(r=u[t],i=u[t+1]&&u[t+1].level,c===r.level)o+="<li>";else for(n=c;n<r.level;n++)o+="<ul><li>";if(o+='<a href="#'+r.id+'">'+r.title+"</a>",i!==r.level&&i)for(n=r.level;n>i;n--)o+="</li></ul><li>";else o+="</li>",i||(o+="</ul>");c=r.level}return o}var d,f=e.$,p={depth:3,headerTag:"h2",className:"mce-toc"},h=function(e){var t=0;return function(){var n=(new Date).getTime().toString(32);return e+n+(t++).toString(32)}},m=h("mcetoc_");e.on("PreInit",function(){var n=e.settings,r=parseInt(n.toc_depth,10)||0;d={depth:r>=1&&r<=9?r:p.depth,headerTag:t(n.toc_header)?n.toc_header:p.headerTag,className:n.toc_class?e.dom.encode(n.toc_class):p.className}}),e.on("PreProcess",function(e){var t=f("."+d.className,e.node);t.length&&(t.removeAttr("contentEditable"),t.find("[contenteditable]").removeAttr("contentEditable"))}),e.on("SetContent",function(){var e=f("."+d.className);e.length&&(e.attr("contentEditable",!1),e.children(":first-child").attr("contentEditable",!0))});var g=function(t){return!t.length||e.dom.getParents(t[0],".mce-offscreen-selection").length>0};e.addCommand("mceInsertToc",function(){var t=f("."+d.className);g(t)?e.insertContent(u(d)):e.execCommand("mceUpdateToc")}),e.addCommand("mceUpdateToc",function(){var t=f("."+d.className);t.length&&e.undoManager.transact(function(){t.html(c(d))})}),e.addButton("toc",{tooltip:"Table of Contents",cmd:"mceInsertToc",icon:"toc",onPostRender:r}),e.addButton("tocupdate",{tooltip:"Update",cmd:"mceUpdateToc",icon:"reload"}),e.addContextToolbar(n,"tocupdate"),e.addMenuItem("toc",{text:"Table of Contents",context:"insert",cmd:"mceInsertToc",onPostRender:r})});
|
|
@ -0,0 +1,135 @@
|
|||
.mce-visualblocks p {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks h1 {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks h2 {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks h3 {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks h4 {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks h5 {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks h6 {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks div:not([data-mce-bogus]) {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks section {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
|
||||
}
|
||||
|
||||
.mce-visualblocks article {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks blockquote {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks address {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
|
||||
}
|
||||
|
||||
.mce-visualblocks pre {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin-left: 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks figure {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks hgroup {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
|
||||
}
|
||||
|
||||
.mce-visualblocks aside {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
|
||||
}
|
||||
|
||||
.mce-visualblocks figcaption {
|
||||
border: 1px dashed #BBB;
|
||||
}
|
||||
|
||||
.mce-visualblocks ul {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
|
||||
}
|
||||
|
||||
.mce-visualblocks ol {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
|
||||
}
|
||||
|
||||
.mce-visualblocks dl {
|
||||
padding-top: 10px;
|
||||
border: 1px dashed #BBB;
|
||||
margin: 0 0 1em 3px;
|
||||
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
|
||||
}
|