Task lists WIP:
* initializing some code parts * mechanism to add font-awesome icons to the defaults one that ConverseJS uses * new way to override ConverseJS index.js (to add new custom plugins, that are directly build into ConverseJS)
This commit is contained in:
15
conversejs/custom/plugins/tasks/index.js
Normal file
15
conversejs/custom/plugins/tasks/index.js
Normal file
@ -0,0 +1,15 @@
|
||||
import { _converse, converse } from '../../../src/headless/core.js'
|
||||
import { ChatRoomTaskLists } from './task-lists.js'
|
||||
import { ChatRoomTaskList } from './task-list.js'
|
||||
import { getHeadingButtons } from './utils.js'
|
||||
|
||||
converse.plugins.add('livechat-converse-tasks', {
|
||||
dependencies: ['converse-muc', 'converse-disco'], // TODO: add converse-pubsub
|
||||
|
||||
initialize () {
|
||||
_converse.ChatRoomTaskLists = ChatRoomTaskLists
|
||||
_converse.ChatRoomTaskList = ChatRoomTaskList
|
||||
|
||||
_converse.api.listen.on('getHeadingButtons', getHeadingButtons)
|
||||
}
|
||||
})
|
15
conversejs/custom/plugins/tasks/task-list.js
Normal file
15
conversejs/custom/plugins/tasks/task-list.js
Normal file
@ -0,0 +1,15 @@
|
||||
import { Model } from '@converse/skeletor/src/model.js'
|
||||
|
||||
/**
|
||||
* A chat room task list.
|
||||
* @class
|
||||
* @namespace _converse.ChatRoomTaskList
|
||||
* @memberof _converse
|
||||
*/
|
||||
class ChatRoomTaskList extends Model {
|
||||
|
||||
}
|
||||
|
||||
export {
|
||||
ChatRoomTaskList
|
||||
}
|
16
conversejs/custom/plugins/tasks/task-lists.js
Normal file
16
conversejs/custom/plugins/tasks/task-lists.js
Normal file
@ -0,0 +1,16 @@
|
||||
import { Collection } from '@converse/skeletor/src/collection.js'
|
||||
import { ChatRoomTaskList } from './task-list'
|
||||
|
||||
/**
|
||||
* A list of {@link _converse.ChatRoomTaskList} instances, representing task lists associated to a MUC.
|
||||
* @class
|
||||
* @namespace _converse.ChatRoomTaskLists
|
||||
* @memberOf _converse
|
||||
*/
|
||||
class ChatRoomTaskLists extends Collection {
|
||||
model = ChatRoomTaskList
|
||||
}
|
||||
|
||||
export {
|
||||
ChatRoomTaskLists
|
||||
}
|
32
conversejs/custom/plugins/tasks/utils.js
Normal file
32
conversejs/custom/plugins/tasks/utils.js
Normal file
@ -0,0 +1,32 @@
|
||||
import { _converse } from '../../../src/headless/core.js'
|
||||
import { __ } from 'i18n'
|
||||
|
||||
export function getHeadingButtons (view, buttons) {
|
||||
const muc = view.model
|
||||
if (muc.get('type') !== _converse.CHATROOMS_TYPE) {
|
||||
// only on MUC.
|
||||
return buttons
|
||||
}
|
||||
|
||||
const myself = muc.getOwnOccupant()
|
||||
if (!myself || !myself.isModerator()) {
|
||||
// User must be moderator
|
||||
return buttons
|
||||
}
|
||||
|
||||
// Adding a "Open task list" button.
|
||||
buttons.unshift({
|
||||
i18n_text: __('Tasks'),
|
||||
handler: async (ev) => {
|
||||
ev.preventDefault()
|
||||
ev.stopPropagation()
|
||||
|
||||
// TODO.
|
||||
},
|
||||
a_class: '',
|
||||
icon_class: 'fa-list', // FIXME
|
||||
name: 'muc-tasks'
|
||||
})
|
||||
|
||||
return buttons
|
||||
}
|
Reference in New Issue
Block a user