semanticeditor est un plugin Django CMS pour l'édition de texte. & Nbsp; Il vous permet d'éditer un site web d'une manière sémantique, puis attribuez présentation et de mise détails pour chaque section du texte. Il prend en charge les dispositions de colonnes complexes à l'aide d'un simple ensemble de contrôles (nouvelle ligne, nouvelle colonne).
classes CSS sont stockés dans la base de données, et peuvent être limités à certains éléments (p, ul, li etc) et à certains modèles.
Ce projet est utilisé dans le cadre de Arkestra par l'École de Médecine de l'Université de Cardiff, qui a conçu le système.
Aperçu
L'objectif est d'avoir un éditeur dont le contenu est édité sémantiquement, et à la fois la mise en page de la colonne et le style sont appliquées séparément. Cependant, dans la base de données combinée unique le code HTML est stocké. Donc, nous avons la situation suivante:
contenu HTML est stocké dans la base de données quelque chose comme:
& Nbsp;
& Nbsp;
Titre
& Nbsp;
Du texte
& Nbsp;
& Nbsp;
& Nbsp;
Du texte
& Nbsp;
Ceci est chargé dans un éditeur personnalisé dans le navigateur qui a alors fait immédiatement certains appels AJAX au serveur pour décomposer en HTML simplifié:
Titre
Du texte
Du texte
et un tableau d'objets précisant présentation par exemple:
[
& nbsp; {'h1_1': ['fancy']}, # styles pour le H1
& nbsp; {'p_1': [«note», «bordée»]}, # styles pour le P
& Nbsp; {'newrow_h1_1': 'newRow'}, # spécifie ligne avant h1_1
& Nbsp; {'newrow_p_2': 'newcolum'},
]
Ces deux pièces sont ensuite édités séparément, soit l'utilisateur ne voit pas le HTML combinée pendant l'édition. Avant de sauvegarder la base de données, l'éditeur ne AJAX appel à combiner les deux parties. Notez l'utilisation des attributs «id» sont ajoutés pour aider à identifier ce que les informations de style appartient à - ceux-ci seront enlevés avant d'enregistrer dans la base de données.
Selon l'interface graphique pour éditer les informations de présentation, l'utilisateur peut avoir à appuyer sur un bouton «Actualiser» afin qu'ils puissent attribuer infos de présentation des paragraphes et des titres nouvellement entrés etc. paragraphes et les titres nouvellement inscrits ne seront évidemment pas avoir la 'id' attributs , de sorte que le HTML peut être mis à jour à ce point aussi, donc tout a une id.
Extensions WYMeditor
L'application de l'éditeur sémantique fournit sa propre version de WYMeditor. Cette valeur est calculée à partir des skins / templates trouvés dans django-CMS2, avec les personnalisations suivantes:
& Nbsp; * Nom de la peau changé de 'django »à« semanticeditor'. Cela est nécessaire si nous voulons permettre à deux versions différentes de WYMeditor sur la même page, un en utilisant les contrôles WYMeditor + CMS normales, un autre avec les commandes pleins 'éditeur sémantique », pour les longs morceaux de contenu.
& Nbsp; * Le fichier skin.js supprime le panneau «classes», puisque ce ne sont pas nécessaire et est remplacé par des éléments dynamiques.
& Nbsp; * skins.css - ajouté un style pour les contrôles de présentation supplémentaires
& Nbsp; * un plugin WYMeditor nommé «sémantique» a été ajoutée. Cela met en œuvre la plupart de la logique côté client pour cette application.
& Nbsp; * le modèle de editorwidget.html a été changé. En particulier:
- La peau a été changé pour «semanticeditor '
- Un appel à wymeditor.semantic () a été ajoutée pour mettre en place le plugin.
& Nbsp; * un nouveau widget de django 'SemanticEditor »a été créé qui hérite de la django widget' WYMeditor 'dans django-CMS2. Ceci est nécessaire afin que:
- Plugin 'sémantique' fichier javascript l'WYMeditor peut être ajouté aux médias
- Notre modèle de editorwdiget.html peut être utilisé
Ce qui est nouveau dans cette version:
- Compatibilité avec django-CMS 2.3. et 2.4
- Regroupement des classes CSS par catégorie
- Bouton pour ouvrir l'éditeur dans un nouvel onglet
- Améliorations de l'interface
- Correction d'une faute qui a causé l'échec complet de plug-in sémantique sous jQuery 1.4.2
- Autres corrections de bugs
Ce qui est nouveau dans la version 0.2.1:
- bug d'emballage fixe (pas de modèles ou des médias statique)
Exigences :
- Python
- django-cms
Commentaires non trouvées