From 1c9f444205a42394986b0cdb4def7ea289acc887 Mon Sep 17 00:00:00 2001 From: Parth Buch Date: Fri, 20 Jul 2012 18:20:49 +0530 Subject: Added Dojo's dijit.Editor --- stapp/static/admin/css/editor.css | 21 +++++++++++++++++ stapp/static/admin/js/editor.js | 47 +++++++++++++++++++++++++++++++++++++++ stapp/video/admin.py | 27 ++++++++++++++++++++-- 3 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 stapp/static/admin/css/editor.css create mode 100644 stapp/static/admin/js/editor.js diff --git a/stapp/static/admin/css/editor.css b/stapp/static/admin/css/editor.css new file mode 100644 index 0000000..92af0ad --- /dev/null +++ b/stapp/static/admin/css/editor.css @@ -0,0 +1,21 @@ +/* Import standard Dojo CSS files */ +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dijit/themes/claro/claro.css"; + +/* Import custom style sheets for plugins */ +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/FindReplace.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/ShowBlockNodes.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/InsertEntity.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/CollapsibleToolbar.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/Blockquote.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/PasteFromWord.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/InsertAnchor.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/TextColor.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/SpellCheck.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/PasteFromWord.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/PasteFromWord.css"; +@import "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox/editor/plugins/resources/css/PasteFromWord.css"; + +/* update CSS rules to cater for Django Admin */ +.dijitEditor {display: inline-block;} +.dijitEditor .dijitToolbar .dijitTextBox {width: 20ex;} +.dijitEditor .dijitToolbar label {display: inline; float: none; width: auto;} diff --git a/stapp/static/admin/js/editor.js b/stapp/static/admin/js/editor.js new file mode 100644 index 0000000..6f92bc8 --- /dev/null +++ b/stapp/static/admin/js/editor.js @@ -0,0 +1,47 @@ +dojo.require("dijit.Editor"); + +// extra plugins +dojo.require("dijit._editor.plugins.FontChoice"); +dojo.require("dojox.editor.plugins.TextColor"); +dojo.require("dojox.editor.plugins.Blockquote"); +dojo.require("dijit._editor.plugins.LinkDialog"); +dojo.require("dojox.editor.plugins.InsertAnchor"); +dojo.require("dojox.editor.plugins.FindReplace"); +dojo.require("dojox.editor.plugins.ShowBlockNodes"); +dojo.require("dojox.editor.plugins.PasteFromWord"); +dojo.require("dijit._editor.plugins.ViewSource"); +dojo.require("dijit._editor.plugins.FullScreen"); +dojo.require("dojox.editor.plugins.InsertEntity"); + +// headless plugins +dojo.require("dojox.editor.plugins.CollapsibleToolbar"); +dojo.require("dojox.editor.plugins.NormalizeIndentOutdent"); +dojo.require("dojox.editor.plugins.PrettyPrint"); // let's pretty-print our HTML +dojo.require("dojox.editor.plugins.AutoUrlLink"); +dojo.require("dojox.editor.plugins.ToolbarLineBreak"); + +dojo.ready(function(){ + var textareas = dojo.query("textarea"); + if(textareas && textareas.length){ + dojo.addClass(dojo.body(), "claro"); + textareas.instantiate(dijit.Editor, { + styleSheets: "/appmedia/style.css;/appmedia/blog/style.css", + plugins: [ + "collapsibletoolbar", + "fullscreen", "viewsource", "|", + "undo", "redo", "|", + "cut", "copy", "paste", "|", + "bold", "italic", "underline", "strikethrough", "|", + "insertOrderedList", "insertUnorderedList", "indent", "outdent", "||", + "formatBlock", "fontName", "fontSize", "||", + "findreplace", "insertEntity", "blockquote", "|", + "createLink", "insertImage", "insertanchor", "|", + "foreColor", "hiliteColor", "|", + "showblocknodes", "pastefromword", + // headless plugins + "normalizeindentoutdent", "prettyprint", + "autourllink", "dijit._editor.plugins.EnterKeyHandling" + ] + }); + } +}); diff --git a/stapp/video/admin.py b/stapp/video/admin.py index 8b24e55..a13f0ea 100644 --- a/stapp/video/admin.py +++ b/stapp/video/admin.py @@ -1,5 +1,28 @@ from video.models import Video, Module from django.contrib import admin +from django.contrib.admin import site, ModelAdmin -admin.site.register(Video) -admin.site.register(Module) +# we define our resources to add to admin pages +class CommonMedia: + js = ( + 'https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js', + '/static/admin/js/editor.js', + ) + css = { + 'all': ('/static/admin/css/editor.css',), + } + +# let's add it to this model +site.register(Video, + list_display = ('description',), + search_fields = ['description',], + Media = CommonMedia, +) + +site.register(Module, + list_display = ('description',), + search_fields = ['description',], + Media = CommonMedia, +) +#admin.site.register(Video) +#admin.site.register(Module) -- cgit