コード例 #1
0
 def __init__(self, context, request):
     self.context = context
     self.request = request
     self.calendar = interfaces.ISolgemaFullcalendarProperties(
         aq_inner(context), None)
     self.portal = getToolByName(self.context,
                                 'portal_url').getPortalObject()
     self._ts = getToolByName(context, 'translation_service')
     self.portal_language = self.getPortalLanguage()
コード例 #2
0
    def __call__(self):
        portal = getToolByName(self.context, 'portal_url').getPortalObject()
        context = aq_inner(self.context)
        target_folder = interfaces.ISolgemaFullcalendarProperties(
            context, None).target_folder
        target_folder = target_folder \
                    and portal.unrestrictedTraverse('/'+ portal.id + target_folder) \
                    or aq_parent(context)

        if not getSecurityManager().checkPermission('Add portal content',
                                                    target_folder):
            raise Unauthorized, "You can't add an event on %s" % str(
                target_folder)

        query = self.context.buildQuery()
        copyDict = getCopyObjectsUID(self.request)

        #Check whether our context actually has a query and if so, whether
        #it has a Type criterion specified.
        if query and query.has_key('Type'):
            if isinstance(query['Type'],
                          (list, tuple)) and len(query['Type']) > 1:
                return json.dumps({'display': True})
            else:
                portal_type = isinstance(
                    query['Type'],
                    (tuple, list)) and query['Type'][0] or query['Type']
                if copyDict and portal.restrictedTraverse(
                        copyDict['url']).portal_type == portal_type:
                    return json.dumps({'display': True})
        else:
            portal_type = 'Event'

        pTypes = [
            a for a in getToolByName(context, 'portal_types').listTypeInfo()
            if a.id == portal_type
        ]
        pTypeTitle = pTypes and pTypes[0].Title() or portal_type
        typeTitle = translate(pTypeTitle, context=self.request)
        if HAS_PLONE40:
            title = PLMF(u'heading_add_item',
                         default='Add ${itemtype}',
                         mapping={'itemtype': typeTitle})
        else:
            title = PLMF(u'label_add_type',
                         default='Add ${type}',
                         mapping={'type': typeTitle})

        return json.dumps({
            'display': False,
            'type': portal_type,
            'title': translate(title, context=self.request)
        })
コード例 #3
0
    def __call__(self):
        calendar = interfaces.ISolgemaFullcalendarProperties(aq_inner(self.context),
                                                             None)
        li = deepcopy(interfaces.IListBaseQueryCriteria(self.context)())
        for criteria in li:
            if criteria['i'] == 'portal_type' and len(criteria['v']) == 1:
                li.remove(criteria)

        if hasattr(calendar, 'availableCriterias') \
           and getattr(calendar, 'availableCriterias', None) != None:
            li = [a for a in li if a['i'] in calendar.availableCriterias]

        return dict([(a['i'], a['v']) for a in li])
コード例 #4
0
def listQueryTopicCriteria(topic):
    calendar = interfaces.ISolgemaFullcalendarProperties(aq_inner(topic), None)
    li = listBaseQueryTopicCriteria(topic)
    for criteria in li:
        if criteria.meta_type == 'ATPortalTypeCriterion' and len(
                criteria.getCriteriaItems()[0][1]) == 1:
            li.remove(criteria)

    if hasattr(calendar, 'availableCriterias') and getattr(
            calendar, 'availableCriterias', None) != None:
        li = [a for a in li if a.Field() in calendar.availableCriterias]

    return li
コード例 #5
0
def upgrade210(context):
    checkViews(context)
    catalog = getToolByName(context, 'portal_catalog')
    for topic in [a.getObject() for a in catalog.searchResults(portal_type="Topic")]:
        calendar = interfaces.ISolgemaFullcalendarProperties(topic, None)
        newColors = {}
        if calendar and getattr(calendar, 'queryColors', None):
            for k,v in calendar.queryColors.items():
                colDict = {}
                for l,w in v.items():
                    l = safe_unicode(l)
                    colDict[str(component.queryUtility(IURLNormalizer).normalize(l))] = w
                newColors[k] = colDict.copy()
            calendar.queryColors = newColors.copy()
コード例 #6
0
 def __init__(self, context, request):
     super(SFAddMenu, self).__init__(context, request)
     self.portal = getToolByName(self.context,
                                 'portal_url').getPortalObject()
     self.portal_url = self.portal.absolute_url()
     self.adapted = interfaces.ISolgemaFullcalendarProperties(
         aq_inner(context), None)
     target_folder = getattr(self.adapted, 'target_folder', None)
     self.addContext = target_folder and self.portal.unrestrictedTraverse(
         '/' + self.portal.id + target_folder) or aq_parent(
             aq_inner(self.context))
     self.EventAllDay = self.request.get('EventAllDay', False)
     self.ReqAllDay = self.EventAllDay and '&EventAllDay=' + self.EventAllDay or ''
     self.startDate = self.request.get('startDate', '')
     self.endDate = self.request.get('endDate', '')
     self.query = self.context.buildQuery()
     self.addableTypes = self.getMenuAddableTypes(self.query)
コード例 #7
0
 def __init__(self, context, request):
     self.context = context
     self.request = request
     self.calendar = interfaces.ISolgemaFullcalendarProperties(
         aq_inner(context), None)
コード例 #8
0
 def __init__(self, context, request):
     super(SolgemaFullcalendarTopicJS, self).__init__(context, request)
     self.calendar = interfaces.ISolgemaFullcalendarProperties(
         aq_inner(context), None)
     self._date = _get_date_from_req(request)
コード例 #9
0
 def __init__(self, context, request):
     super(SolgemaFullcalendarDxView, self).__init__(context, request)
     self.calendar = interfaces.ISolgemaFullcalendarProperties(
         aq_inner(context), None)
コード例 #10
0
 def __init__(self, context, request):
     self.context = context
     self.request = request
     self.portal = context.portal_url.getPortalObject()
     self.calendar = interfaces.ISolgemaFullcalendarProperties(aq_inner(context),
                                                               None)
コード例 #11
0
    def __call__(self):
        portal = getToolByName(self.context, 'portal_url').getPortalObject()
        portal_types = getToolByName(portal, 'portal_types')
        context = aq_inner(self.context)
        target_folder = getattr(
            interfaces.ISolgemaFullcalendarProperties(context, None),
            'target_folder', None)
        target_folder = target_folder \
                    and portal.unrestrictedTraverse('/'+ portal.id + target_folder) \
                    or aq_parent(context)

        if not getSecurityManager().checkPermission('Add portal content',
                                                    target_folder):
            raise Unauthorized, "You can't add an event on %s" % str(
                target_folder)

        query = hasattr(self.context,
                        'buildQuery') and self.context.buildQuery() or {}
        query = normalize_type_query(query, portal)
        copyDict = getCopyObjectsUID(self.request)

        # The 'Item Type' criteria uses the 'Type' index while the 'Item Type
        # (internal)' criteria uses the 'portal_type' index.
        #
        # We need to check for both, portal_type first, because it's more
        # specific than 'Type', which just indexes the content type's Title
        # property (which can be non-unique).
        index = query.get('portal_type', query.get('Type'))
        self.request.response.setHeader("Content-type", "application/json")
        if index:
            if isinstance(index, (list, tuple)) and len(index) > 1:
                return json.dumps({'display': True})

            portal_type = isinstance(index,
                                     (tuple, list)) and index[0] or index
            if copyDict and portal.restrictedTraverse(
                    copyDict['url']).portal_type == portal_type:
                return json.dumps({'display': True})
            elif query.get('Type'):
                portal_type = isinstance(
                    query['Type'],
                    (tuple, list)) and query['Type'][0] or query['Type']
                if copyDict and portal.restrictedTraverse(
                        copyDict['url']).portal_type == portal_type:
                    return json.dumps({'display': True})
        else:
            portal_type = getattr(
                interfaces.ISolgemaFullcalendarProperties(context, None),
                'eventType', 'Event')

        pTypes = [
            a for a in portal_types.listTypeInfo() if a.id == portal_type
        ]
        pTypeTitle = pTypes and pTypes[0].Title() or portal_type
        typeTitle = translate(pTypeTitle, context=self.request)
        if HAS_PLONE40:
            title = PLMF(u'heading_add_item',
                         default='Add ${itemtype}',
                         mapping={'itemtype': typeTitle})
        else:
            title = PLMF(u'label_add_type',
                         default='Add ${type}',
                         mapping={'type': typeTitle})

        return json.dumps({
            'display': False,
            'type': portal_type,
            'title': translate(title, context=self.request)
        })
コード例 #12
0
 def __init__(self, context, request, name='plone.app.event.dx.event'):
     name = getattr(interfaces.ISolgemaFullcalendarProperties(context, None), 'eventType', 'Event')
     ti = getToolByName(context, 'portal_types').getTypeInfo(name)
     request.form['ajax_load'] = 1
     request.form['ajax_include_head'] = 1
     super(InlineFrameAddView, self).__init__(context, request, ti)