示例#1
0
def backlink_handler(field, event):
    try:
        wicked = utils.getWicked(field, event.instance, event)
    except ComponentLookupError:
        # no adapter registered for this type currently
        # @@ This might be handle better by redispatch
        return
        
    if not event.value:
        return

    value = event.value
    value_str = value

    try:
        # this block handle conversions for file uploads and
        # atapi.BaseUnit or any other not quite plain text "value objects"
        value_str = getMultiAdapter((value, field), IValueToString)
    except ComponentLookupError:
        pass


    found = wicked.findall(value_str)

    if not len(found):
        return

    new_links = [wicked.removeParens(link) for link in found]
    wicked.manageLinks(new_links)
示例#2
0
 def do_wicked(self, newcontent, title, section):
     try:
         wicked = getWicked(self.context.getField('text'), self.context)
         wicked.section=section 
         wicked.manageLink(newcontent, normalize(title))
     except ComponentLookupError:
         pass
示例#3
0
def handle_at_newcontent(context, event):
    field = context.Schema()[event.section]
    wicked = getWicked(field, context, event)
    wicked.manageLink(event.newcontent, event.title)
    portal_status_message = quote('"%s" has been created' % event.title)
    url = event.newcontent.absolute_url()
    restr = "%s/edit?title=%s&portal_status_message=%s" % (
        url, quote(event.title), portal_status_message)
    event.request.RESPONSE.redirect(restr)
示例#4
0
def handle_at_newcontent(context, event):
    field = context.Schema()[event.section]
    wicked = getWicked(field, context, event)
    wicked.manageLink(event.newcontent, event.title)
    portal_status_message=quote('"%s" has been created' % event.title)
    url = event.newcontent.absolute_url()
    restr = "%s/edit?title=%s&portal_status_message=%s" %(url,
                                                          quote(event.title),
                                                          portal_status_message)
    event.request.RESPONSE.redirect(restr)
示例#5
0
def at_handle_target_deletion(ref, event):
    """
    Invalidate any pointer before object deletion
    """
    target = ref.getTargetObject()
    for field in ISchema(target).fields():
        if IAmWickedField.providedBy(field):
            wicked = utils.getWicked(field, target)
            wicked.unlink(ref.sourceUID)
            break
示例#6
0
def at_handle_target_deletion(ref, event):
    """
    Invalidate any pointer before object deletion
    """
    target = ref.getTargetObject()
    for field in ISchema(target).fields():
        if IAmWickedField.providedBy(field):
            wicked = utils.getWicked(field, target)
            wicked.unlink(ref.sourceUID)
            break
示例#7
0
 def afterSetUp(self):
     """
     sets the body of page1 to be a wicked link of the id of page2
     """
     super(TestLinkCache, self).afterSetUp()
     field = self.page1.getField(self.wicked_field)
     field.set(self.page1, "((%s))" % self.page2.Title())
     self.field = field
     self.filter = utils.getWicked(field, self.page1)
     self.wicked_ccm = self.filter.cache
     self.wicked_ccm.name=field.getName()
示例#8
0
 def afterSetUp(self):
     """
     sets the body of page1 to be a wicked link of the id of page2
     """
     super(TestLinkCache, self).afterSetUp()
     field = self.page1.getField(self.wicked_field)
     field.set(self.page1, "((%s))" % self.page2.Title())
     self.field = field
     self.filter = utils.getWicked(field, self.page1)
     self.wicked_ccm = self.filter.cache
     self.wicked_ccm.name=field.getName()
示例#9
0
def at_handle_target_moved(obj, event):
    """
    when a target of a link is moved, or renamed we need to notify any
    objects that may be caching pointers
    """
    #@@ add more tests
    if IObjectRemovedEvent.providedBy(event):
        return

    refs = obj.getRefs(relationship=config.BACKLINK_RELATIONSHIP)
    path = '/'.join(obj.getPhysicalPath())
    for target in refs:
        for field in ISchema(target).fields():
            if IAmWickedField.providedBy(field):
                wicked = utils.getWicked(field, target)
                uid = IUID(obj)
                data = dict(path=path, icon=obj.getIcon(), uid=uid)
                wicked.cache.reset(uid, [data])
示例#10
0
def at_handle_target_moved(obj, event):
    """
    when a target of a link is moved, or renamed we need to notify any
    objects that may be caching pointers
    """
    #@@ add more tests
    if IObjectRemovedEvent.providedBy(event):
        return

    refs=obj.getRefs(relationship=config.BACKLINK_RELATIONSHIP)
    path = '/'.join(obj.getPhysicalPath())
    for target in refs:
        for field in ISchema(target).fields():
            if IAmWickedField.providedBy(field):
                wicked = utils.getWicked(field, target)
                uid = IUID(obj)
                data = dict(path=path,
                        icon=obj.getIcon(),
                        uid=uid)
                wicked.cache.reset(uid, [data])