Index: quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py
===================================================================
--- quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py	(revision 747)
+++ quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py	(revision 749)
@@ -439,9 +439,9 @@
         ksscore.setStateVar('plonetabs-category', cat_name)
         
-        # hide portal status message
-        self.kss_hideStatusMessage(ksscore)
-        
         # hide adding form
         self.kss_hideAddForm()
+        
+        # issue portal status message
+        self.kss_issueMessage(_(u"Category changed successfully."))
     
     @kssaction
@@ -450,6 +450,14 @@
         if checked == '1':
             self.setSiteProperties(**{field: False})
+            prefix = 'Generated'
+            if field == 'disable_nonfolderish_sections':
+                prefix += ' not folderish'
+            message = _(u"%s tabs switched on." % prefix)
         else:
             self.setSiteProperties(**{field: True})
+            prefix = 'Generated'
+            if field == 'disable_nonfolderish_sections':
+                prefix += ' not folderish'
+            message = _(u"%s tabs switched off." % prefix)
         
         # update client
@@ -460,4 +468,7 @@
         # update global-sections viewlet
         self.updatePortalTabsPageSection()
+        
+        # issue portal status message
+        self.kss_issueMessage(message)
     
     @kssaction
@@ -486,9 +497,16 @@
             ksscore.removeClass(ksscore.getHtmlIdSelector(id),
                 value="invisible")
+            message = _(u"'${id}' object was included into navigation.",
+                        mapping={'id':obj_id})
         else:
             ksscore.addClass(ksscore.getHtmlIdSelector(id), value="invisible")
+            message = _(u"'${id}' object was excluded from navigation.",
+                        mapping={'id':obj_id})
         
         # update global-sections viewlet
         self.updatePortalTabsPageSection()
+        
+        # issue portal status message
+        self.kss_issueMessage(message)
     
     @kssaction
@@ -505,7 +523,14 @@
             ksscore.removeClass(ksscore.getHtmlIdSelector(id),
                 value="invisible")
+            message = _(u"'${id}' action is now visible.",
+                        mapping={'id':act_id})
         else:
             ksscore.addClass(ksscore.getHtmlIdSelector(id), value="invisible")
+            message = _(u"'${id}' action is now invisible.",
+                        mapping={'id':act_id})
         self.updatePage(cat_name)
+    
+        # issue portal status message
+        self.kss_issueMessage(message)
     
     @kssaction
@@ -522,10 +547,10 @@
         ksscore.deleteNode(ksscore.getHtmlIdSelector(id))
         
-        # issue portal message
-        self.getCommandSet('plone').issuePortalMessage(
-            _(u"'%s' action successfully deleted." % act_id), msgtype="info")
-        
         # update different sections of page depending on actions category
         self.updatePage(cat_name)
+        
+        # issue portal status message
+        self.kss_issueMessage(_(u"'${id}' action successfully removed.",
+                                mapping={'id':act_id}))
     
     @kssaction
@@ -570,8 +595,7 @@
             self.kss_blur(ksscore.getHtmlIdSelector('actname'))
             
-            # issue portal message
-            kssplone.issuePortalMessage(
-                _(u"'%s' action successfully added." % action.id),
-                msgtype="info")
+            message = _(u"'${id}' action successfully added.",
+                        mapping={'id':action.id})
+            msgtype = "info"
             
             # update page
@@ -584,10 +608,12 @@
                                            '.headerAdvanced'), collapse='false')
             
-            # send error message
-            kssplone.issuePortalMessage(
-                _(u"Please correct the indicated errors."), msgtype="error")
+            message = _(u"Please correct the indicated errors.")
+            msgtype = "error"
         
         # update errors on client form
         self.kss_issueErrors(errors)
+        
+        # issue portal status message
+        self.kss_issueMessage(message, msgtype)
     
     @kssaction
@@ -614,4 +640,7 @@
         # remove form errors if such exist
         self.kss_issueErrors({})
+        
+        # issue portal status message
+        self.kss_issueMessage(_(u"Adding canceled."))
     
     @kssaction
@@ -632,4 +661,7 @@
         ksscore.focus(
             ksscore.getCssSelector("#%s input[name=title_%s]" % (id, act_id)))
+        
+        # issue portal status message
+        self.kss_issueMessage(_(u"Fill in required fields and click on Add."))
     
     @kssaction
@@ -643,6 +675,6 @@
         ksscore.replaceHTML(ksscore.getHtmlIdSelector(id), content)
         
-        # hide portal status message
-        self.kss_hideStatusMessage(ksscore)
+        # issue portal status message
+        self.kss_issueMessage(_(u"Changes discarded."))
     
     @kssaction
@@ -670,7 +702,7 @@
             ksscore.replaceHTML(ksscore.getHtmlIdSelector(html_id), content)
             
-            # issue portal message
-            kssplone.issuePortalMessage(_(u"'%s' action saved." % action.id),
-                msgtype="info")
+            message = _(u"'${id}' action successfully updated.",
+                        mapping={'id':action.id})
+            msgtype = "info"
             
             # update page
@@ -688,7 +720,9 @@
                     collapse='false')
             
-            # send error message
-            kssplone.issuePortalMessage(
-                _(u"Please correct the indicated errors."), msgtype="error")
+            message = _(u"Please correct the indicated errors.")
+            msgtype = "error"
+        
+        # issue portal status message
+        self.kss_issueMessage(message, msgtype)
     
     @kssaction
@@ -712,4 +746,7 @@
         # update client
         self.updatePage(cat_name)
+        
+        # issue portal status message
+        self.kss_issueMessage(_(u"Actions successfully sorted."))
     
     #
@@ -854,9 +891,4 @@
     # Utility methods for the kss actions management
     #
-    
-    def kss_hideStatusMessage(self, ksscore):
-        """Hide Portal Status Message"""
-        ksscore.setStyle(ksscore.getHtmlIdSelector('kssPortalMessage'),
-            'display', 'none')
     
     def kss_validateAction(self, id, cat_name):
@@ -952,4 +984,18 @@
                                     positionSelectorType)
     
+    def kss_issueMessage(self, message, msgtype="info"):
+        """"Issues portal status message and removes it afte 10 seconds"""
+        ksscore = self.getCommandSet('core')
+        self.getCommandSet('plone').issuePortalMessage(message, msgtype=msgtype)
+        self.kss_timeout(
+            ksscore.getHtmlIdSelector('kssPortalMessage'),
+            delay='5000', repeat='false',
+            cmd_name='setStyle', name='display', value='none'
+        )
+    
+    def kss_timeout(self, selector, **kw):
+        """KSS Server command to execute plonetabs-timeout client action"""
+        command = self.commands.addCommand('plonetabs-timeout', selector, **kw)
+    
     def renderViewlet(self, manager, name):
         if isinstance(manager, basestring):
