src/pyams_content/reference/pictograms/zmi/__init__.py
changeset 527 5dd1aa8bedd9
parent 516 a3f26cfd3094
child 576 12171cf62cc4
--- a/src/pyams_content/reference/pictograms/zmi/__init__.py	Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/reference/pictograms/zmi/__init__.py	Wed Apr 11 16:46:31 2018 +0200
@@ -12,6 +12,7 @@
 
 __docformat__ = 'restructuredtext'
 
+
 # import standard library
 import sys
 
@@ -34,9 +35,11 @@
 from pyams_content.reference.pictograms import Pictogram
 from pyams_i18n.column import I18nAttrColumn
 from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.event import get_json_table_row_refresh_event
 from pyams_skin.table import I18nColumn
 from pyams_skin.viewlet.toolbar import ToolbarAction
 from pyams_utils.adapter import adapter_config
+from pyams_utils.traversing import get_parent
 from pyams_utils.url import absolute_url
 from pyams_viewlet.viewlet import viewlet_config
 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
@@ -92,6 +95,8 @@
 class PictogramEditForm(AdminDialogEditForm):
     """Pictogram properties edit form"""
 
+    prefix = 'pictogram_properties.'
+
     legend = _("Edit pictogram properties")
     dialog_class = 'modal-large'
 
@@ -107,29 +112,11 @@
 
     def get_ajax_output(self, changes):
         output = super(PictogramAJAXEditForm, self).get_ajax_output(changes)
-        if 'image' in changes.get(IPictogram, ()):
-            image = II18n(self.context).query_attribute('image', request=self.request)
-            timestamp = randint(0, sys.maxsize)
-            output.setdefault('events', []).append({
-                'event': 'myams.refresh',
-                'options': {
-                    'handler': 'MyAMS.skin.refreshRowCell',
-                    'object_id': '{0}::{1}'.format(ReferenceTableContentsTable.id, self.context.__name__),
-                    'col_name': 'image',
-                    'cell': '<img src="{0}?_={1}" />'.format(absolute_url(image, self.request, '++thumb++32x32'),
-                                                             timestamp)
-                }
-            })
-        if 'title' in changes.get(IBaseContent, ()):
-            output.setdefault('events', []).append({
-                'event': 'myams.refresh',
-                'options': {
-                    'handler': 'MyAMS.skin.refreshRowCell',
-                    'object_id': '{0}::{1}'.format(ReferenceTableContentsTable.id, self.context.__name__),
-                    'col_name': 'name',
-                    'cell': II18n(self.context).query_attribute('title', request=self.request)
-                }
-            })
+        if ('image' in changes.get(IPictogram, ())) or \
+           ('title' in changes.get(IBaseContent, ())):
+            parent = get_parent(self.context, IPictogramTable)
+            output.setdefault('events', []).append(
+                get_json_table_row_refresh_event(parent, self.request, PictogramTableContentsTable, self.context))
         return output
 
 
@@ -140,6 +127,8 @@
 class PictogramTableContentsTable(ReferenceTableContentsTable):
     """Pictograms table contents table"""
 
+    prefix = 'pictograms_table'
+
     @property
     def data_attributes(self):
         attributes = super(PictogramTableContentsTable, self).data_attributes
@@ -162,7 +151,8 @@
     def getValue(self, obj):
         image = II18n(obj).query_attribute('image', request=self.request)
         if image:
-            return '<img src="{0}" />'.format(absolute_url(image, self.request, '++thumb++32x32'))
+            timestamp = randint(0, sys.maxsize)
+            return '<img src="{0}?_={1}" />'.format(absolute_url(image, self.request, '++thumb++32x32'), timestamp)
 
 
 @adapter_config(name='name', context=(IPictogramTable, IAdminLayer, PictogramTableContentsTable), provides=IColumn)