src/pyams_content/reference/zmi/__init__.py
changeset 527 5dd1aa8bedd9
parent 457 f78bfebec3d6
child 945 9059a3100378
--- a/src/pyams_content/reference/zmi/__init__.py	Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/reference/zmi/__init__.py	Wed Apr 11 16:46:31 2018 +0200
@@ -16,7 +16,7 @@
 # import standard library
 
 # import interfaces
-from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
+from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, IBaseContent
 from pyams_content.reference.interfaces import IReferenceManager, IReferenceInfo
 from pyams_i18n.interfaces import II18n
 from pyams_skin.interfaces.container import ITableElementName
@@ -25,10 +25,15 @@
 from pyams_zmi.layer import IAdminLayer
 
 # import packages
+from pyams_content.reference import IReferenceTable
+from pyams_content.reference.zmi.table import ReferenceTableContentsTable
+from pyams_form.form import AJAXEditForm
+from pyams_skin.event import get_json_table_row_refresh_event
 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
 from pyams_skin.viewlet.toplinks import TopLinksViewlet, TopLinksMenu
 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
 from pyams_utils.registry import get_local_registry
+from pyams_utils.traversing import get_parent
 from pyams_utils.url import absolute_url
 from pyams_viewlet.viewlet import viewlet_config
 from zope.interface import Interface
@@ -72,3 +77,21 @@
     @property
     def name(self):
         return II18n(self.context).query_attribute('title', request=self.request)
+
+
+#
+# Reference table item views
+#
+
+class ReferenceInfoAJAXEditForm(AJAXEditForm):
+    """Base reference info edit form"""
+
+    table_factory = ReferenceTableContentsTable
+
+    def get_ajax_output(self, changes):
+        output = super(ReferenceInfoAJAXEditForm, self).get_ajax_output(changes)
+        if 'title' in changes.get(IBaseContent, ()):
+            parent = get_parent(self.context, IReferenceTable)
+            output.setdefault('events', []).append(
+                get_json_table_row_refresh_event(parent, self.request, self.table_factory, self.context))
+        return output