def category_removed(self):
     storage = IVTCC(getUtility(IPloneSiteRoot))
     category_path = self._category_path_from_request()
     if not category_path:
         msgid = _(u"You can't remove root category. Please reload page.")
         msg = translate(msgid, context=self.request),
         result = False
     else:
         result = storage.remove_category(category_path)
         if result:
             msg = translate(_(u'Category removed.'), context=self.request)
         else:
             msgid = _(u'Could not remove category. Please reload page.')
             msg = translate(msgid, context=self.request)
     return simplejson.dumps(dict(msg=msg, result=result))
 def category_added_renamed(self):
     storage = IVTCC(getUtility(IPloneSiteRoot))
     old_id = self.request.form.get('old_id')
     new_name = self.request.form.get('new_name')
     if not new_name:
         return 'Missing new name.'
     if not old_id:
         # create new node
         # strip last element from category_path, because it is newly
         # created category name which does not exist yet
         category_path = self._category_path_from_request()[:-1]
         new_id = storage.add_category(category_path, new_name)
         if new_id:
             result = simplejson.dumps(dict(
                                    msg=translate(_(u'Category created'),
                                                  context=self.request),
                                    new_id=new_id,
                                    result=True))
         else:
             result = simplejson.dumps(dict(
                            msg=translate(_(u'Category creation error!'),
                                          context=self.request),
                            new_id='',
                            result=False))
     else:
         # rename old node
         category_path = self._category_path_from_request()
         new_id = storage.rename_category(category_path, old_id, new_name)
         if new_id:
             result = simplejson.dumps(dict(
                                msg=translate(_(u'Category renamed'),
                                              context=self.request),
                                new_id=new_id,
                                result=True))
         else:
             result = simplejson.dumps(dict(
                            msg=translate(_(u'Could not rename category.'),
                                          context=self.request),
                            new_id='',
                            result=False))
     return result
 def categories_tree(self):
     self.request.response.setHeader('Content-Type',
                                     'application/json; charset=utf-8')
     storage = IVTCC(getUtility(IPloneSiteRoot))
     # inject root node
     root = dict(
       attributes={'id': "root-node", 'rel': 'root'},
       state="open",
       data=translate(_("Root node"), context=self.request),
       children=storage.category_tree()
      )
     return simplejson.dumps(root)
 def save_category_keywords(self):
     portal = getUtility(IPloneSiteRoot)
     category_path = self._category_path_from_request()
     kws = self.request.form.get('kws', [])
     if isinstance(kws, basestring):
         kws = kws.split(',')
     if not category_path:
         return 'No valid category selected'
     logger.info('Going to save %d keywords to category %r' % (len(kws),
                                                           category_path))
     IVTCC(portal).set(category_path, kws)
     self.request.response.setHeader('Content-Type',
                                     'text/plain; charset=utf-8')
     return simplejson.dumps(dict(
                                 message=translate(_('Category saved'),
                                                   context=self.request),
                                 keywords=kws
                                 ))