diff --git a/.gitattributes b/.gitattributes index 6648fc2..6703e61 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12,3 +12,4 @@ *.jpg binary *.gif binary *.psd binary +*.svg binary diff --git a/.gitignore b/.gitignore index e69de29..b6a49ac 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,4 @@ +# SASS artifacts +*.css +*.css.map +.sass-cache diff --git a/edit-page.php b/edit-page.php index d1c9bf9..e968583 100644 --- a/edit-page.php +++ b/edit-page.php @@ -57,34 +57,12 @@ if( $_POST ) { /////////////////////// Display Edit Form /////////////////////// -adminhead('Edit Page'); +adminhead('Edit Static Page'); adminmenu('manage-pages.php'); ?> - - - -
]*>/gi,"[quote]");rep(/<\/blockquote>/gi,"[/quote]");rep(/
/gi,"\n");rep(/
/gi,"\n");rep(/
/gi,"\n");rep(//gi,"");rep(/<\/p>/gi,"\n");rep(/ /gi," ");rep(/"/gi,"\"");rep(/</gi,"<");rep(/>/gi,">");rep(/&/gi,"&");return s;},_punbb_bbcode2html:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/\n/gi,"
");rep(/\[b\]/gi,"");rep(/\[\/b\]/gi,"");rep(/\[i\]/gi,"");rep(/\[\/i\]/gi,"");rep(/\[u\]/gi,"");rep(/\[\/u\]/gi,"");rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2");rep(/\[url\](.*?)\[\/url\]/gi,"$1");rep(/\[img\](.*?)\[\/img\]/gi,"");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2");rep(/\[code\](.*?)\[\/code\]/gi,"$1 ");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 ");return s;}});tinymce.PluginManager.add('bbcode',tinymce.plugins.BBCodePlugin);})(); \ No newline at end of file diff --git a/include/tiny_mce/plugins/bbcode/editor_plugin_src.js b/include/tiny_mce/plugins/bbcode/editor_plugin_src.js deleted file mode 100644 index 55afbd0..0000000 --- a/include/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ /dev/null @@ -1,117 +0,0 @@ -/** - * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ - * - * @author Moxiecode - * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. - */ - -(function() { - tinymce.create('tinymce.plugins.BBCodePlugin', { - init : function(ed, url) { - var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase(); - - ed.onBeforeSetContent.add(function(ed, o) { - o.content = t['_' + dialect + '_bbcode2html'](o.content); - }); - - ed.onPostProcess.add(function(ed, o) { - if (o.set) - o.content = t['_' + dialect + '_bbcode2html'](o.content); - - if (o.get) - o.content = t['_' + dialect + '_html2bbcode'](o.content); - }); - }, - - getInfo : function() { - return { - longname : 'BBCode Plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - // HTML -> BBCode in PunBB dialect - _punbb_html2bbcode : function(s) { - s = tinymce.trim(s); - - function rep(re, str) { - s = s.replace(re, str); - }; - - // example: to [b] - rep(/
(.*?)<\/a>/gi,"[url=$1]$2[/url]"); - rep(/ (.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); - rep(/ (.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); - rep(/ (.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); - rep(/ (.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); - rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); - rep(/ (.*?)<\/font>/gi,"[color=$1]$2[/color]"); - rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); - rep(/(.*?)<\/font>/gi,"$1"); - rep(/ /gi,"[img]$1[/img]"); - rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); - rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); - rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); - rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); - rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); - rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); - rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); - rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); - rep(/<\/(strong|b)>/gi,"[/b]"); - rep(/<(strong|b)>/gi,"[b]"); - rep(/<\/(em|i)>/gi,"[/i]"); - rep(/<(em|i)>/gi,"[i]"); - rep(/<\/u>/gi,"[/u]"); - rep(/(.*?)<\/span>/gi,"[u]$1[/u]"); - rep(//gi,"[u]"); - rep(/ ]*>/gi,"[quote]"); - rep(/<\/blockquote>/gi,"[/quote]"); - rep(/
/gi,"\n"); - rep(/
/gi,"\n"); - rep(/
/gi,"\n"); - rep(//gi,""); - rep(/<\/p>/gi,"\n"); - rep(/ /gi," "); - rep(/"/gi,"\""); - rep(/</gi,"<"); - rep(/>/gi,">"); - rep(/&/gi,"&"); - - return s; - }, - - // BBCode -> HTML from PunBB dialect - _punbb_bbcode2html : function(s) { - s = tinymce.trim(s); - - function rep(re, str) { - s = s.replace(re, str); - }; - - // example: [b] to - rep(/\n/gi,"
"); - rep(/\[b\]/gi,""); - rep(/\[\/b\]/gi,""); - rep(/\[i\]/gi,""); - rep(/\[\/i\]/gi,""); - rep(/\[u\]/gi,""); - rep(/\[\/u\]/gi,""); - rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); - rep(/\[url\](.*?)\[\/url\]/gi,"$1"); - rep(/\[img\](.*?)\[\/img\]/gi,""); - rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); - rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); - rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); - - return s; - } - }); - - // Register plugin - tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); -})(); \ No newline at end of file diff --git a/include/tiny_mce/plugins/compat2x/editor_plugin.js b/include/tiny_mce/plugins/compat2x/editor_plugin.js deleted file mode 100644 index 02a1da8..0000000 --- a/include/tiny_mce/plugins/compat2x/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.Compat2x',{getInfo:function(){return{longname:'Compat2x',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};}});(function(){tinymce.extend(tinyMCE,{addToLang:function(p,l){each(l,function(v,k){tinyMCE.i18n[(tinyMCE.settings.language||'en')+'.'+(p?p+'_':'')+k]=v;});},getInstanceById:function(n){return this.get(n);}});})();(function(){var EditorManager=tinymce.EditorManager;tinyMCE.instances={};tinyMCE.plugins={};tinymce.PluginManager.onAdd.add(function(pm,n,p){tinyMCE.plugins[n]=p;});tinyMCE.majorVersion=tinymce.majorVersion;tinyMCE.minorVersion=tinymce.minorVersion;tinyMCE.releaseDate=tinymce.releaseDate;tinyMCE.baseURL=tinymce.baseURL;tinyMCE.isIE=tinyMCE.isMSIE=tinymce.isIE||tinymce.isOpera;tinyMCE.isMSIE5=tinymce.isIE;tinyMCE.isMSIE5_0=tinymce.isIE;tinyMCE.isMSIE7=tinymce.isIE;tinyMCE.isGecko=tinymce.isGecko;tinyMCE.isSafari=tinymce.isWebKit;tinyMCE.isOpera=tinymce.isOpera;tinyMCE.isMac=false;tinyMCE.isNS7=false;tinyMCE.isNS71=false;tinyMCE.compat=true;TinyMCE_Engine=tinyMCE;tinymce.extend(tinyMCE,{getParam:function(n,dv){return this.activeEditor.getParam(n,dv);},addEvent:function(e,na,f,sc){tinymce.dom.Event.add(e,na,f,sc||this);},getControlHTML:function(n){return EditorManager.activeEditor.controlManager.createControl(n);},loadCSS:function(u){tinymce.DOM.loadCSS(u);},importCSS:function(doc,u){if(doc==document)this.loadCSS(u);else new tinymce.dom.DOMUtils(doc).loadCSS(u);},log:function(){console.debug.apply(console,arguments);},getLang:function(n,dv){var v=EditorManager.activeEditor.getLang(n.replace(/^lang_/g,''),dv);if(/^[0-9\-.]+$/g.test(v))return parseInt(v);return v;},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.execCommand;},triggerNodeChange:function(){EditorManager.activeEditor.nodeChanged();},regexpReplace:function(in_str,reg_exp,replace_str,opts){var re;if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);},trim:function(s){return tinymce.trim(s);},xmlEncode:function(s){return tinymce.DOM.encode(s);},explode:function(s,d){var o=[];tinymce.each(s.split(d),function(v){if(v!='')o.push(v);});return o;},switchClass:function(id,cls){var b;if(/^mceButton/.test(cls)){b=EditorManager.activeEditor.controlManager.get(id);if(!b)return;switch(cls){case"mceButtonNormal":b.setDisabled(false);b.setActive(false);return;case"mceButtonDisabled":b.setDisabled(true);return;case"mceButtonSelected":b.setActive(true);b.setDisabled(false);return;}}},addCSSClass:function(e,n,b){return tinymce.DOM.addClass(e,n,b);},hasCSSClass:function(e,n){return tinymce.DOM.hasClass(e,n);},removeCSSClass:function(e,n){return tinymce.DOM.removeClass(e,n);},getCSSClasses:function(){var cl=EditorManager.activeEditor.dom.getClasses(),o=[];each(cl,function(c){o.push(c['class']);});return o;},setWindowArg:function(n,v){EditorManager.activeEditor.windowManager.params[n]=v;},getWindowArg:function(n,dv){var wm=EditorManager.activeEditor.windowManager,v;v=wm.getParam(n);if(v==='')return'';return v||wm.getFeature(n)||dv;},getParentNode:function(n,f){return this._getDOM().getParent(n,f);},selectElements:function(n,na,f){var i,a=[],nl,x;for(x=0,na=na.split(',');x
- - - {#emotions_dlg.title} - - -- - - - - diff --git a/include/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif b/include/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif deleted file mode 100644 index 16f68cc1e91a9b8ec6cfa0ba4e0c86f94b177f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@ SR@5BAv-%C>6y>>#+D4e#&nz^qMDItlpp zTG728+|V&?R13PIEBW(C`uh6d*t-1sZ^XQv;oDD}iYLOV7uVO;{`xl4#4tJ{0;h@! z>)kfFn;iS@Hvj+tA^8LW0018VEC2ui01^Na000Hm;3tYuX_jM3Mo7199TGt*Nf;R= zNmOPKwA8_2Q6MTDP6eT`I1VESVj-zGIG(JdB3U44kcdI@;AAq{Gv^^O%%ltj2GdB) z>vIL;d*~=0a|w1Bf^!cF9R~+vb94;_0}TxWlnMrlj2MuVoSYAreF`3(0|pHS8VLgr zi3bP_qZ s;1-69HWK?p_PpF=Pd8!T%|a$ZRD@LAHn zAH%B}$j8NMQxe3yo%Yxe`tnEM*t)ly6Z-o4{{3 d+P=4)6X4oXy{bw2>K^d$ z@6ERvva+(4ib~41YUkTEn1?rzrOHT>1I=Y*h`+%*@WtPUPg|!@EEI_d5LgZ>^Og z-qyCjsu$J9F8}}lA^8LW0018VEC2ui01^Na000HT;3tYxX_jM37RWXX8&XUv=@{Oj zX@_Sxw3H&!kzgQ?2LvPOL=>Y5VxieY9+_+eqFEql6OKWXd3Ze8Ggf2Zln@U|mI9d9 zGm^(wVUTA5cYs-V1`2#+a})^z6chrF5`~8k5e6@pmkW`GeGw<069yTQaGnH)s0suV zR|pCd0ZtRCsjM9VB^L+~7X%f*zyuc%2p3=#ycf#L%McYo9|{Z&5D^#_78qL%3{WW( X7Xb)FP6z?UH6ODVz!ev-DIowmgll^P diff --git a/include/tiny_mce/plugins/emotions/img/smiley-smile.gif b/include/tiny_mce/plugins/emotions/img/smiley-smile.gif deleted file mode 100644 index e6a9e60d5ddd1243fbbf2197b4dc6cd9c1b58b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@ SR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UVAU=FH^0ssI2A^8LW0018VEC2ui01^Na000Hn;3tYuX_jM3Mn>j&nGr!MNh}v4 zNyxPjwA7*EKx`%q#$ Vl9SM>N9ReH-cn1&^4jYXf0KotqjT;UWC94U(4-NtX4#i!%9}pHA2?&dg3>XLr r8Wuqx2Nnhn1xrT-4h9xbDb^GQ8V(K`1{C5o)#U;I0p5-K5CQ-@9%y SnDDC*4*{OcpiwransPVevTQacIr@mkQp zCf(06s)_=>r7UYx48o@u`uh6d*t-7rH~ji<`P&oj;5Wp)o!8ga`SV6TA_BIW5#ZWV z{`*+_ _>9}pJ}3JDSl85wB_3Jn)Q o9|so(4+|I^92g4^1{Y8%(iR3pP6ig=HPPY$`~mLZA3^{CJDB=?L;wH) diff --git a/include/tiny_mce/plugins/emotions/img/smiley-wink.gif b/include/tiny_mce/plugins/emotions/img/smiley-wink.gif deleted file mode 100644 index 9faf1aff8f4b28e02f4f414975fe1859c43b6b54..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@ Sn03F^-g-qAA3wransPV?|t@9*x%vmQ`7 z4E*pcw3rOOq%3t@4*K#({N^40{c-yG`rz2Q!KfI-yq*61HrBop*VoqW<}&{JS@_x# zwwfH#!YTdnIsgCwA^8LW0018VEC2ui01^Na000Ht;3tYwX_jM3P6j6koH0o%Sun&A zMF+tYv=pL2IcOdp&qH&dG!P?+ArV0)J)O=Yk}%LD6Go@MJn3he8=)%%lWOM*#pN zEDD9iq9J$@90v~;83`GC4i0+{2OJ0pVtacF5E}yn8<`pmkCBv_pqZEtoPY-l0}P>= z3 WE6cr`19U7DgF9{F}at6R35*Q5~ x2OgBy9tRx_7(pKh7zPvsOGgA01{hE&-4zBzP6id}HMp@0Krnzkbss_i06S`>cdh^c diff --git a/include/tiny_mce/plugins/emotions/js/emotions.js b/include/tiny_mce/plugins/emotions/js/emotions.js deleted file mode 100644 index e5c950f..0000000 --- a/include/tiny_mce/plugins/emotions/js/emotions.js +++ /dev/null @@ -1,22 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var EmotionsDialog = { - init : function(ed) { - tinyMCEPopup.resizeToInnerSize(); - }, - - insert : function(file, title) { - var ed = tinyMCEPopup.editor, dom = ed.dom; - - tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { - src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, - alt : ed.getLang(title), - title : ed.getLang(title), - border : 0 - })); - - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); diff --git a/include/tiny_mce/plugins/emotions/langs/en_dlg.js b/include/tiny_mce/plugins/emotions/langs/en_dlg.js deleted file mode 100644 index f6d5f4b..0000000 --- a/include/tiny_mce/plugins/emotions/langs/en_dlg.js +++ /dev/null @@ -1,20 +0,0 @@ -tinyMCE.addI18n('en.emotions_dlg',{ -title:"Insert emotion", -desc:"Emotions", -cool:"Cool", -cry:"Cry", -embarassed:"Embarassed", -foot_in_mouth:"Foot in mouth", -frown:"Frown", -innocent:"Innocent", -kiss:"Kiss", -laughing:"Laughing", -money_mouth:"Money mouth", -sealed:"Sealed", -smile:"Smile", -surprised:"Surprised", -tongue_out:"Tongue out", -undecided:"Undecided", -wink:"Wink", -yell:"Yell" -}); \ No newline at end of file diff --git a/include/tiny_mce/plugins/example/dialog.htm b/include/tiny_mce/plugins/example/dialog.htm deleted file mode 100644 index 58edf9a..0000000 --- a/include/tiny_mce/plugins/example/dialog.htm +++ /dev/null @@ -1,27 +0,0 @@ - - - - {#example_dlg.title} - - - - - - - - - diff --git a/include/tiny_mce/plugins/example/editor_plugin.js b/include/tiny_mce/plugins/example/editor_plugin.js deleted file mode 100644 index cb7010d..0000000 --- a/include/tiny_mce/plugins/example/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.PluginManager.requireLangPack('example');tinymce.create('tinymce.plugins.ExamplePlugin',{init:function(ed,url){ed.addCommand('mceExample',function(){ed.windowManager.open({file:url+'/dialog.htm',width:320+parseInt(ed.getLang('example.delta_width',0)),height:120+parseInt(ed.getLang('example.delta_height',0)),inline:1},{plugin_url:url,some_custom_arg:'custom arg'});});ed.addButton('example',{title:'example.desc',cmd:'mceExample',image:url+'/img/example.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('example',n.nodeName=='IMG');});},createControl:function(n,cm){return null;},getInfo:function(){return{longname:'Example plugin',author:'Some author',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',version:"1.0"};}});tinymce.PluginManager.add('example',tinymce.plugins.ExamplePlugin);})(); \ No newline at end of file diff --git a/include/tiny_mce/plugins/example/editor_plugin_src.js b/include/tiny_mce/plugins/example/editor_plugin_src.js deleted file mode 100644 index d0b5ff2..0000000 --- a/include/tiny_mce/plugins/example/editor_plugin_src.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ - * - * @author Moxiecode - * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. - */ - -(function() { - // Load plugin specific language pack - tinymce.PluginManager.requireLangPack('example'); - - tinymce.create('tinymce.plugins.ExamplePlugin', { - /** - * Initializes the plugin, this will be executed after the plugin has been created. - * This call is done before the editor instance has finished it's initialization so use the onInit event - * of the editor instance to intercept that event. - * - * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. - * @param {string} url Absolute URL to where the plugin is located. - */ - init : function(ed, url) { - // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); - ed.addCommand('mceExample', function() { - ed.windowManager.open({ - file : url + '/dialog.htm', - width : 320 + parseInt(ed.getLang('example.delta_width', 0)), - height : 120 + parseInt(ed.getLang('example.delta_height', 0)), - inline : 1 - }, { - plugin_url : url, // Plugin absolute URL - some_custom_arg : 'custom arg' // Custom argument - }); - }); - - // Register example button - ed.addButton('example', { - title : 'example.desc', - cmd : 'mceExample', - image : url + '/img/example.gif' - }); - - // Add a node change handler, selects the button in the UI when a image is selected - ed.onNodeChange.add(function(ed, cm, n) { - cm.setActive('example', n.nodeName == 'IMG'); - }); - }, - - /** - * Creates control instances based in the incomming name. This method is normally not - * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons - * but you sometimes need to create more complex controls like listboxes, split buttons etc then this - * method can be used to create those. - * - * @param {String} n Name of the control to create. - * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. - * @return {tinymce.ui.Control} New control instance or null if no control was created. - */ - createControl : function(n, cm) { - return null; - }, - - /** - * Returns information about the plugin as a name/value array. - * The current keys are longname, author, authorurl, infourl and version. - * - * @return {Object} Name/value array containing information about the plugin. - */ - getInfo : function() { - return { - longname : 'Example plugin', - author : 'Some author', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example', - version : "1.0" - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin); -})(); \ No newline at end of file diff --git a/include/tiny_mce/plugins/example/img/example.gif b/include/tiny_mce/plugins/example/img/example.gif deleted file mode 100644 index 1ab5da4461113d2af579898528246fdbe52ecd00..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@0`XR2{OVa>-G_df0vaY /i);if(attr&&attr[1]){bdattr=attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(bdattr){for(i=0,len=bdattr.length;i ',sp);t.head=c.substring(0,sp+1);ep=c.indexOf('
\n';t.head+=ed.getParam('fullpage_default_doctype','');t.head+='\n\n
\n
\n';if(v=ed.getParam('fullpage_default_encoding'))t.head+='\n';if(v=ed.getParam('fullpage_default_font_family'))st+='font-family: '+v+';';if(v=ed.getParam('fullpage_default_font_size'))st+='font-size: '+v+';';if(v=ed.getParam('fullpage_default_text_color'))st+='color: '+v+';';t.head+='\n
\n