diff --git a/view/browser/view.py b/view/browser/view.py index 89caf25..18bde6f 100644 --- a/view/browser/view.py +++ b/view/browser/view.py @@ -35,7 +35,7 @@ view_macros = ViewPageTemplateFile(os.path.join('liquid', 'view_macros.pt')) class BaseView(object): index = generic_page - default_template = view_macros # specify in subclass + default_template = template = view_macros # specify in subclass resource_prefix = '/@@/' view_mode = 'view' @@ -55,8 +55,11 @@ class BaseView(object): def defaultMacros(self): return self.default_template.macros + def macros(self): + return self.template.macros + def contentMacro(self): - return self.defaultMacros()[getattr(self, 'content_renderer', 'content')] + return self.macros()[getattr(self, 'content_renderer', 'content')] #@rcache def homeURL(self): diff --git a/wiki/base/media.py b/wiki/base/media.py index e6ee88d..2b0043e 100644 --- a/wiki/base/media.py +++ b/wiki/base/media.py @@ -70,7 +70,7 @@ class MediaObject(object): def __init__(self, name, title=None, parent=None): self.name = name - self.title = title or Name + self.title = title or name self.parent = parent def getManager(self): diff --git a/wiki/browser/media.pt b/wiki/browser/media.pt index 749db5f..570e334 100644 --- a/wiki/browser/media.pt +++ b/wiki/browser/media.pt @@ -2,11 +2,30 @@ -

Media Manager

-
- -
+

+ : + Media Manager

+
+ +
+
+
+
+
+ +

Media Objects

+
+ +
+ +
+ + + +

+

diff --git a/wiki/browser/media.py b/wiki/browser/media.py index 48120b5..d9e2775 100644 --- a/wiki/browser/media.py +++ b/wiki/browser/media.py @@ -29,16 +29,26 @@ from zope.event import notify from zope.lifecycleevent import ObjectModifiedEvent from zope.traversing.browser import absoluteURL +from cybertools.wiki.browser.view import WikiBaseView from cybertools.wiki.interfaces import IMediaManager -class MediaManagerView(object): +class MediaManagerView(WikiBaseView): - default_template = ViewPageTemplateFile('default.pt') + template = ViewPageTemplateFile('media.pt') content_renderer = 'media_manager' def update(self): + form = self.request.form + if form.get('form_action') == 'upload': + f = form.get('file') + if f: + data = f.read() + mmName = self.context.getConfig('mediaManager') + mm = component.getAdapter(self.context, IMediaManager, name=mmName) + obj = mm.createObject(f.filename) + obj.setRawData(data) return True def listObjects(self): @@ -46,3 +56,11 @@ class MediaManagerView(object): mm = component.getAdapter(self.context, IMediaManager, name=mmName) return mm.listObjects() + + +class MediaObjectView(WikiBaseView): + + template = ViewPageTemplateFile('media.pt') + + content_renderer = 'media_object' + diff --git a/wiki/browser/view.py b/wiki/browser/view.py index b0d9d6e..ca12ef0 100644 --- a/wiki/browser/view.py +++ b/wiki/browser/view.py @@ -35,6 +35,7 @@ from cybertools.link.interfaces import ILinkManager class WikiBaseView(object): default_template = ViewPageTemplateFile('default.pt') + template = default_template @Lazy def actions(self): diff --git a/wiki/generic/mixin.py b/wiki/generic/mixin.py index b2d146a..f5d1c96 100644 --- a/wiki/generic/mixin.py +++ b/wiki/generic/mixin.py @@ -36,6 +36,7 @@ from cybertools.link.base import Link, LinkManager as BaseLinkManager from cybertools.link.interfaces import ILinkManager from cybertools.util.generic.interfaces import IGenericObject, IGenericFolder from cybertools.wiki.base.config import WikiConfigInfo, BaseConfigurator +from cybertools.wiki.base.media import MediaObject from cybertools.wiki.base.wiki import WikiManager as BaseWikiManager from cybertools.wiki.base.wiki import Wiki as BaseWiki from cybertools.wiki.base.wiki import WikiPage as BaseWikiPage @@ -165,3 +166,8 @@ class MediaContainer(object): pass + +class MediaObject(MediaObject): + + pass + diff --git a/z2/browser/view.py b/z2/browser/view.py index 2f9e844..157a3b5 100644 --- a/z2/browser/view.py +++ b/z2/browser/view.py @@ -46,17 +46,17 @@ class BaseView(BrowserView, BaseView): template_name = 'view_macros' content_renderer = 'content' - def defaultMacros(self): + def macros(self): template = getattr(self.context, self.template_name, None) if template is None: - return super(BaseView, self).defaultMacros() + return super(BaseView, self).macros() return template.macros def contentMacro(self): macroName = self.content_renderer - macro = self.defaultMacros().get(macroName) + macro = self.macros().get(macroName) if macro is None: - return super(BaseView, self).defaultMacros()[macroName] + return super(BaseView, self).macros()[macroName] return macro diff --git a/z2/generic.py b/z2/generic.py index d57bc7f..a1efea9 100644 --- a/z2/generic.py +++ b/z2/generic.py @@ -84,6 +84,9 @@ class GenericFolder(GenericObject): def getItems(self, types=None): return self.objectItems(types) + def values(self, types=None): + return self.objectValues(types) + @component.adapter(IGeneric, IObjectAddedEvent) def setup(obj, event):