Commit ebe86a45 by benjaoming

Merge branch 'master' of github.com:benjaoming/django-wiki

parents 45b67b27 97f8413e
......@@ -19,15 +19,15 @@ class ArticleRevisionForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ArticleRevisionForm, self).__init__(*args, **kwargs)
EditorClass = editors.EditorClass
editor = editors.editor
EditorClass = editors.getEditorClass()
editor = editors.getEditor()
self.fields['content'].widget = editor.get_admin_widget()
class ArticleRevisionAdmin(admin.ModelAdmin):
form = ArticleRevisionForm
class Media:
js = editors.EditorClass.AdminMedia.js
css = editors.EditorClass.AdminMedia.css
js = editors.getEditorClass().AdminMedia.js
css = editors.getEditorClass().AdminMedia.css
class ArticleRevisionInline(admin.TabularInline):
model = models.ArticleRevision
......@@ -37,8 +37,8 @@ class ArticleRevisionInline(admin.TabularInline):
fields = ('content', 'title', 'deleted', 'locked',)
class Media:
js = editors.EditorClass.AdminMedia.js
css = editors.EditorClass.AdminMedia.css
js = editors.getEditorClass().AdminMedia.js
css = editors.getEditorClass().AdminMedia.css
class ArticleForm(forms.ModelForm):
......
from django.utils.translation import ugettext as _
"""Base classes for different plugin objects.
* BasePlugin: Create a wiki_plugin.py with a class that inherits from BasePlugin.
* PluginSidebarFormMixin: Mix in this class in the form that should be rendered in the editor sidebar
* PluginSettingsFormMixin: ..and this one for a form in the settings tab.
Please have a look in wiki.models.pluginbase to see where to inherit your
plugin's models.
"""
class BasePlugin(object):
"""Plugins should inherit from this"""
# Must fill in!
slug = None
# Optional
settings_form = None# A form class to add to the settings tab
urlpatterns = []
article_tab = None #(_(u'Attachments'), "icon-file")
article_view = None # A view for article_id/plugin/slug/
notifications = [] # A list of notification handlers to be subscribed if the notification system is active
# Example
# [{'model': models.AttachmentRevision,
# 'message': lambda obj: _(u"A file was changed: %s") % obj.get_filename(),
# 'key': ARTICLE_EDIT,
# 'created': True,
# 'get_article': lambda obj: obj.attachment.article}
# ]
markdown_extensions = []
pass
class PluginSidebarFormMixin(object):
def get_usermessage(self):
pass
class PluginSettingsFormMixin(object):
settings_form_headline = _(u'Settings for plugin')
settings_order = 1
settings_write_access = False
def get_usermessage(self):
pass
from wiki.conf import settings
from django.core.urlresolvers import get_callable
EditorClass = get_callable(settings.EDITOR)
editor = EditorClass()
_EditorClass = None
_editor = None
def getEditorClass():
global _EditorClass
if not _EditorClass:
_EditorClass = get_callable(settings.EDITOR)
return _EditorClass
def getEditor():
global _editor
if not _editor:
_editor = getEditorClass()()
return _editor
......@@ -9,24 +9,24 @@ from django.utils.html import escape, conditional_escape
from itertools import chain
from wiki import models
from wiki.editors import editor
from wiki.editors import getEditor
from wiki.core.diff import simple_merge
from django.forms.widgets import HiddenInput
from wiki.plugins import PluginSettingsFormMixin
from wiki.core import baseplugin
class CreateRootForm(forms.Form):
title = forms.CharField(label=_(u'Title'), help_text=_(u'Initial title of the article. May be overridden with revision titles.'))
content = forms.CharField(label=_(u'Type in some contents'),
help_text=_(u'This is just the initial contents of your article. After creating it, you can use more complex features like adding plugins, meta data, related articles etc...'),
required=False, widget=editor.get_widget()) #@UndefinedVariable
required=False, widget=getEditor().get_widget()) #@UndefinedVariable
class EditForm(forms.Form):
title = forms.CharField(label=_(u'Title'),)
content = forms.CharField(label=_(u'Contents'),
required=False, widget=editor.get_widget()) #@UndefinedVariable
required=False, widget=getEditor().get_widget()) #@UndefinedVariable
summary = forms.CharField(label=_(u'Summary'), help_text=_(u'Give a short reason for your edit, which will be stated in the revision log.'),
required=False)
......@@ -181,7 +181,7 @@ class CreateForm(forms.Form):
title = forms.CharField(label=_(u'Title'),)
slug = forms.SlugField(label=_(u'Slug'), help_text=_(u"This will be the address where your article can be found. Use only alphanumeric characters and - or _. Note that you cannot change the slug after creating the article."),)
content = forms.CharField(label=_(u'Contents'),
required=False, widget=editor.get_widget()) #@UndefinedVariable
required=False, widget=getEditor().get_widget()) #@UndefinedVariable
summary = forms.CharField(label=_(u'Summary'), help_text=_(u"Write a brief message for the article's history log."),
required=False)
......@@ -225,7 +225,7 @@ class DeleteForm(forms.Form):
return cd
class PermissionsForm(PluginSettingsFormMixin, forms.ModelForm):
class PermissionsForm(baseplugin.PluginSettingsFormMixin, forms.ModelForm):
settings_form_headline = _(u'Permissions')
settings_order = 5
......
......@@ -232,6 +232,7 @@ def update_simple_plugins(instance, *args, **kwargs):
plugins to match this article revision"""
if kwargs.get('created', False):
p_revisions = SimplePlugin.objects.filter(article=instance.article, deleted=False)
p_revisions.update(revision=instance)
# TODO: This was breaking things. SimplePlugin doesn't have a revision?
#p_revisions.update(revision=instance)
signals.post_save.connect(update_simple_plugins, ArticleRevision)
\ No newline at end of file
......@@ -124,10 +124,11 @@ class URLPath(MPTTModel):
root_nodes = cls.objects.root_nodes().filter(site=site)
if not root_nodes:
# (get_or_create does not work for MPTT models??)
root = cls.objects.create(site=site)
article = Article()
article.add_revision(ArticleRevision(title=title, **kwargs),
save=True)
article.save()
root = cls.objects.create(site=site, article=article)
article.add_object_relation(root)
else:
root = root_nodes[0]
......@@ -152,9 +153,12 @@ class URLPath(MPTTModel):
######################################################
# Just get this once
urlpath_content_type = ContentType.objects.get_for_model(URLPath)
urlpath_content_type = None
def on_article_relation_save(instance, *args, **kwargs):
global urlpath_content_type
if not urlpath_content_type:
urlpath_content_type = ContentType.objects.get_for_model(URLPath)
if instance.content_type == urlpath_content_type:
URLPath.objects.filter(id=instance.object_id).update(article=instance.article)
......
from django import forms
from django.utils.translation import ugettext as _
"""Base classes for different plugin objects.
* BasePlugin: Create a wiki_plugin.py with a class that inherits from BasePlugin.
* PluginSidebarFormMixin: Mix in this class in the form that should be rendered in the editor sidebar
* PluginSettingsFormMixin: ..and this one for a form in the settings tab.
Please have a look in wiki.models.pluginbase to see where to inherit your
plugin's models.
"""
class BasePlugin(object):
"""Plugins should inherit from this"""
# Must fill in!
slug = None
# Optional
settings_form = None# A form class to add to the settings tab
urlpatterns = []
article_tab = None #(_(u'Attachments'), "icon-file")
article_view = None # A view for article_id/plugin/slug/
notifications = [] # A list of notification handlers to be subscribed if the notification system is active
# Example
# [{'model': models.AttachmentRevision,
# 'message': lambda obj: _(u"A file was changed: %s") % obj.get_filename(),
# 'key': ARTICLE_EDIT,
# 'created': True,
# 'get_article': lambda obj: obj.attachment.article}
# ]
markdown_extensions = []
pass
class PluginSidebarFormMixin(object):
def get_usermessage(self):
pass
class PluginSettingsFormMixin(object):
settings_form_headline = _(u'Settings for plugin')
settings_order = 1
settings_write_access = False
def get_usermessage(self):
pass
......@@ -2,15 +2,14 @@
from django.conf.urls.defaults import patterns, url
from django.utils.translation import ugettext as _
from wiki.core import plugins_registry
from wiki import plugins
from wiki.core import plugins_registry, baseplugin
from wiki.plugins.attachments import views
from wiki.plugins.attachments import models
from wiki.plugins.attachments import settings
from wiki.plugins.attachments.markdown_extensions import AttachmentExtension
from wiki.plugins.notifications import ARTICLE_EDIT
class AttachmentPlugin(plugins.BasePlugin):
class AttachmentPlugin(baseplugin.BasePlugin):
#settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm'
......
from django import forms
from django.utils.translation import ugettext as _
from wiki.plugins import PluginSidebarFormMixin
from wiki.core.baseplugin import PluginSidebarFormMixin
from wiki.plugins.images import models
......
......@@ -2,12 +2,11 @@
from django.conf.urls.defaults import patterns, url
from django.utils.translation import ugettext as _
from wiki.core import plugins_registry
from wiki import plugins
from wiki.core import plugins_registry, baseplugin
from wiki.plugins.images import views, models, settings, forms
from wiki.plugins.notifications import ARTICLE_EDIT
class ImagePlugin(plugins.BasePlugin):
class ImagePlugin(baseplugin.BasePlugin):
#settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm'
......
......@@ -6,9 +6,9 @@ from django.contrib.contenttypes.models import ContentType
from django.utils.safestring import mark_safe
from wiki.plugins.notifications import ARTICLE_EDIT
from wiki.plugins import PluginSettingsFormMixin
from wiki.core import baseplugin
class SubscriptionForm(PluginSettingsFormMixin, forms.Form):
class SubscriptionForm(baseplugin.PluginSettingsFormMixin, forms.Form):
settings_form_headline = _(u'Notifications')
settings_order = 1
......
from wiki.core import plugins_registry
from wiki import plugins
from wiki.core import plugins_registry, baseplugin
class NotifyPlugin(plugins.BasePlugin):
class NotifyPlugin(baseplugin.BasePlugin):
settings_form = 'wiki.plugins.notifications.forms.SubscriptionForm'
......
......@@ -106,7 +106,7 @@ class Create(FormView, ArticleMixin):
kwargs['parent_urlpath'] = self.urlpath
kwargs['parent_article'] = self.article
kwargs['create_form'] = kwargs.pop('form', None)
kwargs['editor'] = editors.editor
kwargs['editor'] = editors.getEditor()
return super(Create, self).get_context_data(**kwargs)
......@@ -301,7 +301,7 @@ class Edit(FormView, ArticleMixin):
def get_context_data(self, **kwargs):
kwargs['edit_form'] = kwargs.pop('form', None)
kwargs['editor'] = editors.editor
kwargs['editor'] = editors.getEditor()
kwargs['selected_tab'] = 'edit'
kwargs['sidebar'] = zip(self.sidebar_plugins, self.sidebar_forms)
return super(Edit, self).get_context_data(**kwargs)
......@@ -577,6 +577,6 @@ def root_create(request):
create_form = forms.CreateRootForm()
c = RequestContext(request, {'create_form': create_form,
'editor': editors.editor,})
'editor': editors.getEditor(),})
return render_to_response("wiki/article/create_root.html", context_instance=c)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment