| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- TrexConfig.addSidebar('attachbox', {
- show: _FALSE,
- destroy: _FALSE
- });
- /**
- * Trex.AttachBox
- * Trex.Attachment instance들이 저장되는 class
- * @class
- * @extends Trex.EntryBox
- */
- Trex.AttachBox = Trex.Class.create({
- /** @ignore */
- $extend: Trex.EntryBox,
- isChecked: _FALSE,
- initialize: function() {
- },
- checkAvailableCapacity: function() { //Before Popup
- return _TRUE;
- },
- getAvailableCapacity: function() { //Within Flash
- return _TRUE;
- },
- checkInsertableSize: function() { //Before Attach
- return _TRUE;
- }
- });
- Trex.install("editor.getAttachBox & sidebar.getAttachments",
- function(editor, toolbar, sidebar, canvas, config){
- var _attachBox = new Trex.AttachBox(config, editor);
- sidebar.entryboxRegistry['attachbox'] = _attachBox;
- editor.getAttachBox = function() {
- return _attachBox;
- };
- sidebar.getAttachments = _attachBox.getEntries.bind(_attachBox);
- }
- );
- Trex.register("filter > attachers",
- function(editor) {
- var _attachBox = editor.getAttachBox();
- var _docparser = editor.getDocParser();
- _docparser.registerFilter(
- 'filter/attachments', {
- 'text@load': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('text@load', contents);
- }
- contents = entry.getChangedContent(contents, entry.regLoad, "");
- });
- return contents;
- },
- 'source@load': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('source@load', contents);
- }
- contents = entry.getChangedContent(contents, entry.regLoad, entry.dispText);
- });
- return contents;
- },
- 'html@load': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('html@load', contents);
- }
- contents = entry.getChangedContent(contents, entry.regLoad, entry.dispHtml);
- });
- return contents;
- },
- 'text4save': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('text4save', contents);
- }
- contents = entry.getChangedContent(contents, entry.regText, "");
- });
- return contents;
- },
- 'source4save': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('source4save', contents);
- }
- contents = entry.getChangedContent(contents, entry.regText, entry.saveHtml, ["id", "class"]);
- });
- return contents;
- },
- 'html4save': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('html4save', contents);
- }
- contents = entry.getChangedContent(contents, entry.regHtml, entry.saveHtml, ["id", "class"]);
- });
- return contents;
- },
- 'text2source': function(contents){
- return contents;
- },
- 'text2html': function(contents){
- return contents;
- },
- 'source2text': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('source2text', contents);
- }
- contents = entry.getChangedContent(contents, entry.regText, "");
- });
- return contents;
- },
- 'source2html': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('source2html', contents);
- }
- contents = entry.getChangedContent(contents, entry.regText, entry.dispHtml);
- });
- return contents;
- },
- 'html2text': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('html2text', contents);
- }
- contents = entry.getChangedContent(contents, entry.regHtml, "");
- });
- return contents;
- },
- 'html2source': function(contents){
- var entries = _attachBox.datalist;
- entries.each(function(entry) {
- if (entry.loadDataByContent) {
- entry.loadDataByContent('html2source', contents);
- }
- contents = entry.getChangedContent(contents, entry.regHtml, entry.dispText, ["id", "class"]);
- });
- return contents;
- }
- }
- );
- }
- );
-
- Trex.module("push history @when entrybox has changes",
- function(editor, toolbar, sidebar, canvas) {
- var _attachBox = editor.getAttachBox();
- _attachBox.observeJob(Trex.Ev.__ENTRYBOX_ENTRY_REMOVED, function(entry) {
- canvas.history.saveHistory(
- { deleted: _FALSE },
- { deleted: _TRUE },
- function(data) {
- entry.deletedMark = data.deleted;
- _attachBox.fireJobs(Trex.Ev.__ENTRYBOX_ENTRY_REFRESH, entry);
- }
- );
- });
- /*
- * IE에서는 canvas.execute 가 setTimeout 을 통하여 실행이 되기 때문에
- * 이하 실행되어야 하는 로직과 순서가 뒤바뀌는 문제가 있다.
- * saveHistory, injectHistory 와 같이 쌍으로 실행이 되며,
- * 순서 보장이 중요한 작업의 경우에 이를 맞춰주기 위해 뒤에 실행되어야 하는 로직도
- * setTimeout 을 이용한다.
- */
- var runOrRunLaterIfIE = function(fn) {
- if ($tx.msie) {
- setTimeout(function() {
- fn();
- }, 0);
- } else {
- fn();
- }
- };
-
- _attachBox.observeJob(Trex.Ev.__ENTRYBOX_ENTRY_ADDED, function(entry) {
- runOrRunLaterIfIE(function() {
- canvas.history.injectHistory(
- { deleted: _TRUE },
- { deleted: _FALSE },
- function(data) {
- entry.deletedMark = data.deleted;
- _attachBox.fireJobs(Trex.Ev.__ENTRYBOX_ENTRY_REFRESH, entry);
- }
- );
- });
- });
- }
- );
|