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):