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'))
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))
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
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
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
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'))
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
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