123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /*******************************************************************************
- * KindEditor - WYSIWYG HTML Editor for Internet
- * Copyright (C) 2006-2011 kindsoft.net
- *
- * @author Roddy <luolonghao@gmail.com>
- * @site http://www.kindsoft.net/
- * @licence http://www.kindsoft.net/license.php
- *******************************************************************************/
- KindEditor.plugin('emoticons', function(K) {
- var self = this, name = 'emoticons',
- path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'),
- allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons,
- currentPageNum = 1;
- self.clickToolbar(name, function() {
- var rows = 5, cols = 9, total = 135, startNum = 0,
- cells = rows * cols, pages = Math.ceil(total / cells),
- colsHalf = Math.floor(cols / 2),
- wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'),
- elements = [],
- menu = self.createMenu({
- name : name,
- beforeRemove : function() {
- removeEvent();
- }
- });
- menu.div.append(wrapperDiv);
- var previewDiv, previewImg;
- if (allowPreview) {
- previewDiv = K('<div class="ke-preview"></div>').css('right', 0);
- previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />');
- wrapperDiv.append(previewDiv);
- previewDiv.append(previewImg);
- }
- function bindCellEvent(cell, j, num) {
- if (previewDiv) {
- cell.mouseover(function() {
- if (j > colsHalf) {
- previewDiv.css('left', 0);
- previewDiv.css('right', '');
- } else {
- previewDiv.css('left', '');
- previewDiv.css('right', 0);
- }
- previewImg.attr('src', path + num + '.gif');
- K(this).addClass('ke-on');
- });
- } else {
- cell.mouseover(function() {
- K(this).addClass('ke-on');
- });
- }
- cell.mouseout(function() {
- K(this).removeClass('ke-on');
- });
- cell.click(function(e) {
- self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus();
- e.stop();
- });
- }
- function createEmoticonsTable(pageNum, parentDiv) {
- var table = document.createElement('table');
- parentDiv.append(table);
- if (previewDiv) {
- K(table).mouseover(function() {
- previewDiv.show('block');
- });
- K(table).mouseout(function() {
- previewDiv.hide();
- });
- elements.push(K(table));
- }
- table.className = 'ke-table';
- table.cellPadding = 0;
- table.cellSpacing = 0;
- table.border = 0;
- var num = (pageNum - 1) * cells + startNum;
- for (var i = 0; i < rows; i++) {
- var row = table.insertRow(i);
- for (var j = 0; j < cols; j++) {
- var cell = K(row.insertCell(j));
- cell.addClass('ke-cell');
- bindCellEvent(cell, j, num);
- var span = K('<span class="ke-img"></span>')
- .css('background-position', '-' + (24 * num) + 'px 0px')
- .css('background-image', 'url(' + path + 'static.gif)');
- cell.append(span);
- elements.push(cell);
- num++;
- }
- }
- return table;
- }
- var table = createEmoticonsTable(currentPageNum, wrapperDiv);
- function removeEvent() {
- K.each(elements, function() {
- this.unbind();
- });
- }
- var pageDiv;
- function bindPageEvent(el, pageNum) {
- el.click(function(e) {
- removeEvent();
- table.parentNode.removeChild(table);
- pageDiv.remove();
- table = createEmoticonsTable(pageNum, wrapperDiv);
- createPageTable(pageNum);
- currentPageNum = pageNum;
- e.stop();
- });
- }
- function createPageTable(currentPageNum) {
- pageDiv = K('<div class="ke-page"></div>');
- wrapperDiv.append(pageDiv);
- for (var pageNum = 1; pageNum <= pages; pageNum++) {
- if (currentPageNum !== pageNum) {
- var a = K('<a href="javascript:;">[' + pageNum + ']</a>');
- bindPageEvent(a, pageNum);
- pageDiv.append(a);
- elements.push(a);
- } else {
- pageDiv.append(K('@[' + pageNum + ']'));
- }
- pageDiv.append(K('@ '));
- }
- }
- createPageTable(currentPageNum);
- });
- });
|