Skip to content

Commit

Permalink
Proof of concept implementation of pat-autosubmit and pat-inject to s…
Browse files Browse the repository at this point in the history
…ave attributes
  • Loading branch information
pilz committed Mar 4, 2015
1 parent ad01831 commit e36ae14
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 12 deletions.
36 changes: 36 additions & 0 deletions src/ploneintranet/workspace/browser/tiles/sidebar.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
from zope.publisher.browser import BrowserView
from zope.component import getMultiAdapter
from plone import api
from plone.i18n.normalizer import idnormalizer
from collective.workspace.interfaces import IWorkspace
from plone.app.contenttypes.interfaces import IEvent
from plone.memoize.instance import memoize
from DateTime import DateTime
from Products.CMFPlone.utils import safe_unicode
from Products.CMFCore.utils import _checkPermission as checkPermission
from Products.statusmessages.interfaces import IStatusMessage

FOLDERISH_TYPES = ['folder']

Expand All @@ -25,6 +27,18 @@ def render(self):
def __call__(self):
return self.render()

def status_messages(self):
""" Returns status messages if any
"""
messages = IStatusMessage(self.request)
m = messages.show()
for item in m:
item.id = idnormalizer.normalize(item.message)
return m

def make_id(self, text):
return idnormalizer(text)


class SidebarSettingsMembers(BaseTile):
""" A view to serve as the member roster in the sidebar
Expand Down Expand Up @@ -120,6 +134,28 @@ class Sidebar(BaseTile):

index = ViewPageTemplateFile("templates/sidebar.pt")

def __call__(self):
""" write attributes, if any, set state, render
"""
form = self.request.form

def _m(m, t='success'):
IStatusMessage(self.request).addStatusMessage(m, t)

if self.request.method == "POST" and form:
ws = self.my_workspace()

if form.get('title') and form.get('title') != ws.title:
ws.title = form.get('title').strip()
_m('Title changed')

if form.get('description') and \
form.get('description') != ws.description:
ws.description = form.get('description').strip()
_m('Description changed')

return self.render()

def my_workspace(self):
return parent_workspace(self)

Expand Down
25 changes: 13 additions & 12 deletions src/ploneintranet/workspace/browser/tiles/templates/sidebar.pt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<html>
<body>
<aside class="sidebar left tagging-off" id="sidebar">
<aside class="sidebar left tagging-off" id="sidebar" >

<div hidden id="more-menu">
<ul class="menu">
Expand Down Expand Up @@ -354,37 +354,38 @@
<a href="/feedback/workspace-settings-advanced.html" tal:attributes="href string:${ws/absolute_url}/sidebar.settings.advanced" class="pat-inject" data-pat-inject="target: #workspace-settings > .tabs-content; source: #workspace-settings > .tabs-content">Advanced</a>
</nav>
<div class="tabs-content">
<form action="">
<form action="#" tal:attributes="action string:${ws/absolute_url}/@@sidebar.default" method="post" class="pat-autosubmit pat-inject" data-pat-inject="target: #workspace-settings > .tabs-content; source: #workspace-settings > .tabs-content && target: #document-content::before; source: .sidebar-status-message" data-pat-autosubmit="delay: defocus">
<fieldset class="vertical">
<label>
Workspace title
<input type="text" value="{{ page.workspace_name }}" placeholder="Workspace title"
tal:attributes="value ws/Title" />
tal:attributes="value ws/Title" name="title" />
</label>
<label>
Workspace brief description
<textarea rows="4" placeholder="Workspace brief description" tal:content="ws/Description">The goal of this project is to integrate CA to ADC product.</textarea>
<textarea rows="4" placeholder="Workspace brief description" tal:content="ws/Description" name="description">The goal of this project is to integrate CA to ADC product.</textarea>
</label>
<fieldset class="pat-checklist">
<label>
<input type="checkbox" checked> Visible workspace
<input type="checkbox" name="workspace_visible"> Visible workspace
</label>
<label>
<input type="checkbox" checked> Workspace calendar visible in central calendar application
<input type="checkbox" name="calendar_visible"> Workspace calendar visible in central calendar application
</label>
</fieldset>
</fieldset>
</form>
</div>

</div>


</div>




<tal:messages define="status_messages view/status_messages" condition="status_messages" repeat="message status_messages">
<article id="my-feedback-message" tal:attributes="id message/id" class="sidebar-status-message">
<p id="my-feedback-message-body" class="pat-notification" data-pat-notification="type: banner" tal:attributes="id string:${message/id}-body; data-pat-notification string:${attrs/data-pat-notification};; class: ${message/type}" tal:content="message/message">
Something good happened
</p>
</article>
</tal:messages>
</aside>

</body>
Expand Down

0 comments on commit e36ae14

Please sign in to comment.