Пример #1
0
    def __init__(self, card, action_log, configurator):
        """
        Card is a card business object.
        """

        super(CardMembers, self).__init__(card, action_log, configurator)

        # members part of the card
        self.overlay_add_members = component.Component(
            overlay.Overlay(lambda r: (r.i(class_='ico-btn icon-user'),
                                       r.span(_(u'+'), class_='count')),
                            lambda r: component.Component(self).render(
                                r, model='add_member_overlay'),
                            dynamic=True,
                            cls='card-overlay'))
        self.new_member = component.Component(usermanager.NewMember(
            self.autocomplete_method),
                                              model='add_members')
        self.members = [
            component.Component(
                usermanager.UserManager.get_app_user(member.username,
                                                     data=member))
            for member in card.members
        ]

        self.see_all_members = component.Component(
            overlay.Overlay(lambda r: component.Component(self).render(
                r, model='more_users'),
                            lambda r: component.Component(self).on_answer(
                                self.remove_member).render(
                                    r, model='members_list_overlay'),
                            dynamic=False,
                            cls='card-overlay'))
Пример #2
0
    def __init__(self, id_, board, card_extensions, action_log, search_engine_service, services_service, data=None):
        """Initialization

        In:
            - ``id_`` -- the id of the column
        """
        self.db_id = id_
        self._data = data
        self.id = 'list_' + str(self.db_id)
        self.board = board
        self.nb_card = var.Var(self.data.nb_max_cards)
        self._services = services_service
        self.action_log = action_log
        self.search_engine = search_engine_service
        self.card_extensions = card_extensions
        self.body = component.Component(self, 'body')
        self.title = component.Component(
            title.EditableTitle(self.get_title)).on_answer(self.set_title)
        self.card_counter = component.Component(CardsCounter(self))
        self.cards = [
            component.Component(
                self._services(
                    comp.Card, c.id,
                    self.card_extensions,
                    self.action_log, data=c))
                      for c in self.data.cards]
        self.new_card = component.Component(
            comp.NewCard(self))

        self.actions_comp = component.Component(self, 'overlay')
        self.actions_overlay = component.Component(overlay.Overlay(
            lambda r: r.i(class_='icon-target2'),
            self.actions_comp.render,
            title=_('List actions'), dynamic=False))
Пример #3
0
def render_board_background_title_color_edit(self, h, comp, *args):
    """Edit the label color"""
    # If label changed reload columns
    h << component.Component(
        overlay.Overlay(lambda r: comp.render(r, model='title-color'),
                        lambda r: comp.render(r, model='title-color-overlay'),
                        dynamic=False,
                        title=_('Change color')))
    return h.root
Пример #4
0
def render_User_overlay_remove(self, h, comp, model):
    sub_model = model[8:]
    h << component.Component(
        overlay.Overlay(lambda r: (comp.render(r, "avatar"), {
            'class': 'miniavatar'
        }),
                        lambda r: comp.render(r, sub_model),
                        dynamic=False,
                        cls='card-overlay'
                        if model == 'remove' else 'board-labels-overlay'))
    return h.root
Пример #5
0
def render_Label_edit_color(self, h, comp, *args):
    """Edit the label color"""
    # If label changed reload columns
    if self._changed():
        h << h.script('reload_columns()')
        self._changed(False)
    h << component.Component(
        overlay.Overlay(lambda r: comp.render(r, model='color'),
                        lambda r: comp.render(r, model='edit-color-overlay'),
                        dynamic=False,
                        title=_('Change color')))

    return h.root
Пример #6
0
    def __init__(self, card, action_log, configurator):
        """Initialization

        In:
          - ``card`` -- the card object (Card instance)
        """
        super(CardLabels, self).__init__(card, action_log, configurator)
        self.comp_id = str(random.randint(10000, 100000))
        self._comp = component.Component(self)
        self.overlay = component.Component(
            overlay.Overlay(lambda r: self._comp.render(r, model="list"),
                            lambda r: self._comp.render(r, model='overlay'),
                            dynamic=False,
                            cls='card-edit-form-overlay'))
Пример #7
0
def render_board_background_title_color_edit(self, h, comp, *args):
    """Edit the label color"""
    # If label changed reload columns
    if self._changed():
        h.head.javascript(
            h.generate_id(), "YAHOO.kansha.app.set_title_color(%s)" %
            ajax.py2js(self.board.title_color or u''))
        image_url = self.board.background_image_url or ''
        image_position = self.board.background_image_position
        h.head.javascript(
            h.generate_id(),
            "YAHOO.kansha.app.set_board_background_image(%s, %s)" %
            (ajax.py2js(image_url), ajax.py2js(image_position)))
        self._changed(False)
    h << component.Component(
        overlay.Overlay(lambda r: comp.render(r, model='title-color'),
                        lambda r: comp.render(r, model='title-color-overlay'),
                        dynamic=False,
                        title=_('Change color')))
    return h.root
Пример #8
0
    def __init__(self,
                 id_,
                 app_title,
                 app_banner,
                 theme,
                 card_extensions,
                 search_engine,
                 assets_manager_service,
                 mail_sender_service,
                 services_service,
                 load_children=True):
        """Initialization

        In:
          -- ``id_`` -- the id of the board in the database
          -- ``mail_sender_service`` -- Mail service, used to send mail
          -- ``on_board_delete`` -- function to call when the board is deleted
        """
        self.model = 'columns'
        self.app_title = app_title
        self.app_banner = app_banner
        self.theme = theme
        self.mail_sender = mail_sender_service
        self.id = id_
        self.assets_manager = assets_manager_service
        self.search_engine = search_engine
        self._services = services_service
        # Board extensions are not extracted yet, so
        # board itself implement their API.
        self.board_extensions = {
            'weight': self,
            'labels': self,
            'members': self
        }
        self.card_extensions = card_extensions.set_configurators(
            self.board_extensions)

        self.action_log = ActionLog(self)

        self.version = self.data.version
        self.modal = component.Component(popin.Empty())
        self.card_matches = set()  # search results
        self.last_search = u''

        self.columns = []
        self.archive_column = None
        if load_children:
            self.load_children()

        # Member part
        self.overlay_add_members = component.Component(
            overlay.Overlay(lambda r: (r.i(class_='ico-btn icon-user'),
                                       r.span(_(u'+'), class_='count')),
                            lambda r: component.Component(self).render(
                                r, model='add_member_overlay'),
                            dynamic=True,
                            cls='board-labels-overlay'))
        self.new_member = component.Component(
            usermanager.NewMember(self.autocomplete_method))

        self.update_members()

        def many_user_render(h, number):
            return h.span(h.i(class_='ico-btn icon-user'),
                          h.span(number, class_='count'),
                          title=_("%s more...") % number)

        self.see_all_members = component.Component(
            overlay.Overlay(lambda r: many_user_render(
                r,
                len(self.all_members) - self.MAX_SHOWN_MEMBERS),
                            lambda r: component.Component(self).render(
                                r, model='members_list_overlay'),
                            dynamic=False,
                            cls='board-labels-overlay'))
        self.see_all_members_compact = component.Component(
            overlay.Overlay(
                lambda r: many_user_render(r, len(self.all_members)),
                lambda r: component.Component(self).render(
                    r, model='members_list_overlay'),
                dynamic=False,
                cls='board-labels-overlay'))

        self.comp_members = component.Component(self)

        # Icons for the toolbar
        self.icons = {
            'add_list':
            component.Component(Icon('icon-plus', _('Add list'))),
            'edit_desc':
            component.Component(
                Icon('icon-pencil', _('Edit board description'))),
            'preferences':
            component.Component(Icon('icon-cog', _('Preferences'))),
            'export':
            component.Component(Icon('icon-download3', _('Export board'))),
            'save_template':
            component.Component(Icon('icon-floppy', _('Save as template'))),
            'archive':
            component.Component(Icon('icon-trashcan', _('Archive board'))),
            'leave':
            component.Component(Icon('icon-exit', _('Leave this board'))),
            'history':
            component.Component(Icon('icon-history', _("Action log"))),
        }

        # Title component
        self.title = component.Component(title.EditableTitle(
            self.get_title)).on_answer(self.set_title)

        self.must_reload_search = False