%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/static/assets/4379ccf5/js/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/static/assets/4379ccf5/js/humhub.topic.js |
/*
* @link https://www.humhub.org/
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*
*/
humhub.module('topic', function (module, require, $) {
var event = require('event');
var topics = {};
var string = require('util').string;
var client = require('client');
var loader = require('ui.loader');
var Widget = require('ui.widget').Widget;
var addTopic = function (evt) {
var streamFilter = Widget.instance($('#wall-stream-filter-nav'));
if(!streamFilter || !streamFilter.getFilterById('topic') && evt.$trigger.data('topic-url')) {
client.pjax.redirect(evt.$trigger.data('topic-url'));
return;
}
var topicId = evt.$trigger.data('topic-id');
if (topics[topicId]) {
return;
}
topics[topicId] = getTopicFromTrigger(evt.$trigger);
updated();
};
var getTopicFromTrigger = function ($trigger) {
var id = $trigger.data('topic-id');
var name = $trigger.find('.label').text();
var $linked = getRemoveLabel({id:id, name:name});
return {
id: $trigger.data('topic-id'),
name: name,
$label: $linked,
icon: module.config.icon
};
};
var getRemoveLabel = function(topic) {
return $(string.template(module.template.removeLabel, {id: topic.id, name: string.encode(topic.name), icon: module.config.icon}));
};
var removeTopic = function (evt) {
var topic = getTopicFromTrigger(evt.$trigger);
delete topics[topic.id];
updated();
};
var getTopics = function () {
return $.extend({}, topics);
};
var setTopics = function(newTopics) {
topics = {};
newTopics.forEach(function(topic) {
topic.$label = getRemoveLabel(topic);
topic.icon = module.config.icon;
topics[topic.id] = topic;
});
updated();
};
var updated = function() {
event.trigger('humhub:topic:updated', [getTopicArray()]);
}
var getTopicIds = function () {
return Object.keys(topics) || [];
};
var getTopicArray = function() {
var result = [];
$.each(topics, function(id, topic) {
result.push(topic);
});
return result;
};
var removeOverviewTopic = function(evt) {
var $row = evt.$trigger.closest('[data-key]');
var $nameTd = $row.find('td:first');
var name = $nameTd.text();
var $loader = loader.set($('<span>').text(name), {size: '10px', css: {padding: '0px'}});
$nameTd.html($loader);
client.post(evt).then(function(response) {
if(response.success) {
$row.remove();
module.log.success(response.message, true);
}
}).catch(function(e) {
module.log.error(e, true);
loader.reset($loader);
});
};
var unload = function() {
//Todo: remember active topics by space?
topics = {};
};
module.template = {
'removeLabel': '<a href="#" class="topic-remove-label" data-action-click="topic.removeTopic" data-topic-id="{id}"><span class="label label-default animated bounceIn">{icon} {name}</span></a>'
};
module.export({
addTopic: addTopic,
setTopics: setTopics,
removeTopic: removeTopic,
removeOverviewTopic: removeOverviewTopic,
getTopics: getTopics,
getTopicIds: getTopicIds,
unload: unload
});
});