summaryrefslogtreecommitdiffstats
path: root/extensions/tinymce/jscripts/tiny_mce/plugins/layer
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/tinymce/jscripts/tiny_mce/plugins/layer')
-rw-r--r--extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js1
-rw-r--r--extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js209
2 files changed, 210 insertions, 0 deletions
diff --git a/extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js b/extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
new file mode 100644
index 0000000..4cd9427
--- /dev/null
+++ b/extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
@@ -0,0 +1 @@
+(function(){tinymce.create('tinymce.plugins.Layer',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertLayer',t._insertLayer,t);ed.addCommand('mceMoveForward',function(){t._move(1);});ed.addCommand('mceMoveBackward',function(){t._move(-1);});ed.addCommand('mceMakeAbsolute',function(){t._toggleAbsolute();});ed.addButton('moveforward',{title:'layer.forward_desc',cmd:'mceMoveForward'});ed.addButton('movebackward',{title:'layer.backward_desc',cmd:'mceMoveBackward'});ed.addButton('absolute',{title:'layer.absolute_desc',cmd:'mceMakeAbsolute'});ed.addButton('insertlayer',{title:'layer.insertlayer_desc',cmd:'mceInsertLayer'});ed.onInit.add(function(){if(tinymce.isIE)ed.getDoc().execCommand('2D-Position',false,true);});ed.onNodeChange.add(t._nodeChange,t);ed.onVisualAid.add(t._visualAid,t);},getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var le,p;le=this._getParentLayer(n);p=ed.dom.getParent(n,'DIV,P,IMG');if(!p){cm.setDisabled('absolute',1);cm.setDisabled('moveforward',1);cm.setDisabled('movebackward',1);}else{cm.setDisabled('absolute',0);cm.setDisabled('moveforward',!le);cm.setDisabled('movebackward',!le);cm.setActive('absolute',le&&le.style.position.toLowerCase()=="absolute");}},_visualAid:function(ed,e,s){var dom=ed.dom;tinymce.each(dom.select('div,p',e),function(e){if(/^(absolute|relative|static)$/i.test(e.style.position)){if(s)dom.addClass(e,'mceItemVisualAid');else dom.removeClass(e,'mceItemVisualAid');}});},_move:function(d){var ed=this.editor,i,z=[],le=this._getParentLayer(ed.selection.getNode()),ci=-1,fi=-1,nl;nl=[];tinymce.walk(ed.getBody(),function(n){if(n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position))nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i;}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1;}}else{for(i=0;i<z.length;i++){if(z[i]>z[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else nl[ci].style.zIndex=z[ci]+1;}ed.execCommand('mceRepaint');},_getParentLayer:function(n){return this.editor.dom.getParent(n,function(n){return n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position);});},_insertLayer:function(){var ed=this.editor,p=ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(),'*'));ed.dom.add(ed.getBody(),'div',{style:{position:'absolute',left:p.x,top:(p.y>20?p.y:20),width:100,height:100},'class':'mceItemVisualAid'},ed.selection.getContent()||ed.getLang('layer.content'));},_toggleAbsolute:function(){var ed=this.editor,le=this._getParentLayer(ed.selection.getNode());if(!le)le=ed.dom.getParent(ed.selection.getNode(),'DIV,P,IMG');if(le){if(le.style.position.toLowerCase()=="absolute"){ed.dom.setStyles(le,{position:'',left:'',top:'',width:'',height:''});ed.dom.removeClass(le,'mceItemVisualAid');}else{if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';le.style.position="absolute";ed.addVisual(ed.getBody());}ed.execCommand('mceRepaint');ed.nodeChanged();}}});tinymce.PluginManager.add('layer',tinymce.plugins.Layer);})(); \ No newline at end of file
diff --git a/extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js b/extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
new file mode 100644
index 0000000..a72f6c3
--- /dev/null
+++ b/extensions/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
@@ -0,0 +1,209 @@
+/**
+ * $Id: editor_plugin_src.js 652 2008-02-29 13:09:46Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Layer', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceInsertLayer', t._insertLayer, t);
+
+ ed.addCommand('mceMoveForward', function() {
+ t._move(1);
+ });
+
+ ed.addCommand('mceMoveBackward', function() {
+ t._move(-1);
+ });
+
+ ed.addCommand('mceMakeAbsolute', function() {
+ t._toggleAbsolute();
+ });
+
+ // Register buttons
+ ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
+ ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
+ ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
+ ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
+
+ ed.onInit.add(function() {
+ if (tinymce.isIE)
+ ed.getDoc().execCommand('2D-Position', false, true);
+ });
+
+ ed.onNodeChange.add(t._nodeChange, t);
+ ed.onVisualAid.add(t._visualAid, t);
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Layer',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ _nodeChange : function(ed, cm, n) {
+ var le, p;
+
+ le = this._getParentLayer(n);
+ p = ed.dom.getParent(n, 'DIV,P,IMG');
+
+ if (!p) {
+ cm.setDisabled('absolute', 1);
+ cm.setDisabled('moveforward', 1);
+ cm.setDisabled('movebackward', 1);
+ } else {
+ cm.setDisabled('absolute', 0);
+ cm.setDisabled('moveforward', !le);
+ cm.setDisabled('movebackward', !le);
+ cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
+ }
+ },
+
+ // Private methods
+
+ _visualAid : function(ed, e, s) {
+ var dom = ed.dom;
+
+ tinymce.each(dom.select('div,p', e), function(e) {
+ if (/^(absolute|relative|static)$/i.test(e.style.position)) {
+ if (s)
+ dom.addClass(e, 'mceItemVisualAid');
+ else
+ dom.removeClass(e, 'mceItemVisualAid');
+ }
+ });
+ },
+
+ _move : function(d) {
+ var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
+
+ nl = [];
+ tinymce.walk(ed.getBody(), function(n) {
+ if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
+ nl.push(n);
+ }, 'childNodes');
+
+ // Find z-indexes
+ for (i=0; i<nl.length; i++) {
+ z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
+
+ if (ci < 0 && nl[i] == le)
+ ci = i;
+ }
+
+ if (d < 0) {
+ // Move back
+
+ // Try find a lower one
+ for (i=0; i<z.length; i++) {
+ if (z[i] < z[ci]) {
+ fi = i;
+ break;
+ }
+ }
+
+ if (fi > -1) {
+ nl[ci].style.zIndex = z[fi];
+ nl[fi].style.zIndex = z[ci];
+ } else {
+ if (z[ci] > 0)
+ nl[ci].style.zIndex = z[ci] - 1;
+ }
+ } else {
+ // Move forward
+
+ // Try find a higher one
+ for (i=0; i<z.length; i++) {
+ if (z[i] > z[ci]) {
+ fi = i;
+ break;
+ }
+ }
+
+ if (fi > -1) {
+ nl[ci].style.zIndex = z[fi];
+ nl[fi].style.zIndex = z[ci];
+ } else
+ nl[ci].style.zIndex = z[ci] + 1;
+ }
+
+ ed.execCommand('mceRepaint');
+ },
+
+ _getParentLayer : function(n) {
+ return this.editor.dom.getParent(n, function(n) {
+ return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
+ });
+ },
+
+ _insertLayer : function() {
+ var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));
+
+ ed.dom.add(ed.getBody(), 'div', {
+ style : {
+ position : 'absolute',
+ left : p.x,
+ top : (p.y > 20 ? p.y : 20),
+ width : 100,
+ height : 100
+ },
+ 'class' : 'mceItemVisualAid'
+ }, ed.selection.getContent() || ed.getLang('layer.content'));
+ },
+
+ _toggleAbsolute : function() {
+ var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
+
+ if (!le)
+ le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
+
+ if (le) {
+ if (le.style.position.toLowerCase() == "absolute") {
+ ed.dom.setStyles(le, {
+ position : '',
+ left : '',
+ top : '',
+ width : '',
+ height : ''
+ });
+
+ ed.dom.removeClass(le, 'mceItemVisualAid');
+ } else {
+ if (le.style.left == "")
+ le.style.left = 20 + 'px';
+
+ if (le.style.top == "")
+ le.style.top = 20 + 'px';
+
+ if (le.style.width == "")
+ le.style.width = le.width ? (le.width + 'px') : '100px';
+
+ if (le.style.height == "")
+ le.style.height = le.height ? (le.height + 'px') : '100px';
+
+ le.style.position = "absolute";
+ ed.addVisual(ed.getBody());
+ }
+
+ ed.execCommand('mceRepaint');
+ ed.nodeChanged();
+ }
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
+})(); \ No newline at end of file