YUI.add('moodle-core_message-toolbox', function (Y, NAME) {
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
/**
* JS used when deleting messages.
*
* @module moodle-core_message-toolbox
* @package core_message
* @copyright 2015 Mark Nelson
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
var CSS = {
ACCESSHIDE: 'accesshide',
MESSAGEACTIVE: 'messageactive'
};
var SELECTORS = {
DELETEICON: '.deleteicon',
MESSAGEACTIVE: '.messageactive',
MESSAGEHISTORY: '.messagehistory',
MESSAGES: '.messagecontent'
};
M.core_message = M.core_message || {};
M.core_message.toolbox = M.core_message.toolbox || {};
/**
* This class contains the JS related to deleting messages.
*
* @class M.core_message.toolbox.deletemsg
* @constructor
*/
M.core_message.toolbox.deletemsg = {
/**
* The area the messages are contained.
*
* @property messagearea
*/
messagearea: null,
/**
* Initializer.
*
* Sets up event listeners which 'activate' and 'deactivate' a message.
*
* @method init
*/
init: function() {
this.messagearea = Y.one(SELECTORS.MESSAGEHISTORY);
// Set the events.
this.messagearea.delegate('hover', this.over, this.out, SELECTORS.MESSAGES);
this.messagearea.delegate('click', this.click, SELECTORS.MESSAGES, this);
},
/**
* Handles when a mouse hovers over a message.
*
* @private
* @params {EventFacade} e
* @method over
*/
over: function(e) {
// 'Activate' the message area we hovered on.
e.currentTarget.addClass(CSS.MESSAGEACTIVE);
e.currentTarget.one(SELECTORS.DELETEICON).removeClass(CSS.ACCESSHIDE);
},
/**
* Handles when a mouse hovers off a message.
*
* @private
* @params {EventFacade} e
* @method out
*/
out: function(e) {
// 'Deactivate' the message area we hovered off.
e.currentTarget.removeClass(CSS.MESSAGEACTIVE);
e.currentTarget.one(SELECTORS.DELETEICON).addClass(CSS.ACCESSHIDE);
},
/**
* Handles when a mouse clicks on a message.
*
* @private
* @params {EventFacade} e
* @method click
*/
click: function(e) {
// 'Deactivate' the currently active message (if there is one).
var activemessage = this.messagearea.one(SELECTORS.MESSAGEACTIVE);
if (activemessage) {
activemessage.removeClass(CSS.MESSAGEACTIVE);
activemessage.one(SELECTORS.DELETEICON).addClass(CSS.ACCESSHIDE);
}
// 'Activate' the message area we clicked on.
e.currentTarget.addClass(CSS.MESSAGEACTIVE);
e.currentTarget.one(SELECTORS.DELETEICON).removeClass(CSS.ACCESSHIDE);
}
};
}, '@VERSION@');