123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086 |
- /*
- [Discuz!] (C)2001-2099 Comsenz Inc.
- This is NOT a freeware, use is subject to license terms
- $Id: portal_diy.js 31093 2012-07-16 03:54:34Z zhangguosheng $
- */
- var drag = new Drag();
- drag.extend({
- 'getBlocksTimer' : '',
- 'blocks' : [],
- 'blockDefaultClass' : [{'key':'选择样式','value':''},{'key':'无边框且无边距','value':'cl_block_bm'},{'key':'样式1','value':'xbs_1'},{'key':'样式2','value':'xbs xbs_2'},{'key':'样式3','value':'xbs xbs_3'},{'key':'样式4','value':'xbs xbs_4'},{'key':'样式5','value':'xbs xbs_5'},{'key':'样式6','value':'xbs xbs_6'},{'key':'样式7','value':'xbs xbs_7'}],
- 'frameDefaultClass' : [{'key':'选择样式','value':''},{'key':'无边框且无边距','value':'cl_frame_bm'},{'key':'无边框框架','value':'xfs xfs_nbd'},{'key':'样式1','value':'xfs xfs_1'},{'key':'样式2','value':'xfs xfs_2'},{'key':'样式3','value':'xfs xfs_3'},{'key':'样式4','value':'xfs xfs_4'},{'key':'样式5','value':'xfs xfs_5'}],
- setDefalutMenu : function () {
- this.addMenu('default','标题','drag.openTitleEdit(event)');
- this.addMenu('default','样式','drag.openStyleEdit(event)');
- this.addMenu('default', '删除', 'drag.removeBlock(event)');
- this.addMenu('block', '属性', 'drag.openBlockEdit(event)');
- this.addMenu('block', '数据', 'drag.openBlockEdit(event,"data")');
- this.addMenu('block', '更新', 'drag.blockForceUpdate(event)');
- this.addMenu('frame', '导出', 'drag.frameExport(event)');
- this.addMenu('tab', '导出', 'drag.frameExport(event)');
- },
- setSampleMenu : function () {
- this.addMenu('block', '属性', 'drag.openBlockEdit(event)');
- this.addMenu('block', '数据', 'drag.openBlockEdit(event,"data")');
- this.addMenu('block', '更新', 'drag.blockForceUpdate(event)');
- },
- openBlockEdit : function (e,op) {
- e = Util.event(e);
- op = (op=='data') ? 'data' : 'block';
- var bid = e.aim.id.replace('cmd_portal_block_','');
- this.removeMenu();
- showWindow('showblock', 'portal.php?mod=portalcp&ac=block&op='+op+'&bid='+bid+'&tpl='+document.diyform.template.value, 'get', -1);
- },
- getDiyClassName : function (id,index) {
- var obj = this.getObjByName(id);
- var ele = $(id);
- var eleClassName = ele.className.replace(/ {2,}/g,' ');
- var className = '',srcClassName = '';
- if (obj instanceof Block) {
- className = eleClassName.split(this.blockClass+' ');
- srcClassName = this.blockClass;
- } else if(obj instanceof Tab) {
- className = eleClassName.split(this.tabClass+' ');
- srcClassName = this.tabClass;
- } else if(obj instanceof Frame) {
- className = eleClassName.split(this.frameClass+' ');
- srcClassName = this.frameClass;
- }
- if (index != null && index<className.length) {
- className = className[index].replace(/^ | $/g,'');
- } else {
- className.push(srcClassName);
- }
- return className;
- },
- getOption : function (arr,value) {
- var html = '';
- for (var i in arr) {
- if (typeof arr[i] == 'function') continue;
- var selected = arr[i]['value'] == value ? ' selected="selected"' : '';
- html += '<option value="'+arr[i]['value']+'"'+selected+'>'+arr[i]['key']+'</option>';
- }
- return html;
- },
- getRule : function (selector,attr) {
- selector = spaceDiy.checkSelector(selector);
- var value = (!selector || !attr) ? '' : spaceDiy.styleSheet.getRule(selector, attr);
- return value;
- },
- openStyleEdit : function (e) {
- e = Util.event(e);
- var id = e.aim.id.replace('cmd_','');
- var obj = this.getObjByName(id);
- var objType = obj instanceof Block ? 1 : 0;
- var bgcolor = '',bgimage = '',bgrepeat = '',html = '',diyClassName = '',fontcolor = '',fontsize = '',linkcolor = '',linkfontsize = '';
- var bdtstyle = '',bdtwidth = '',bdtcolor = '',bdrstyle = '',bdrwidth = '',bdrcolor = '',bdbstyle = '',bdbwidth = '',bdbcolor = '',bdlstyle = '',bdlwidth = '',bdlcolor = '';
- var margint = '',marginr = '',marginb = '',marginl = '',cmargint = '',cmarginr = '',cmarginb = '',cmarginl ='';
- var selector = '#'+id;
- bgcolor = this.getRule(selector, 'backgroundColor');
- bgimage = this.getRule(selector, 'backgroundImage');
- bgrepeat = this.getRule(selector, 'backgroundRepeat');
- bgimage = bgimage && bgimage != 'none' ? Util.trimUrl(bgimage) : '';
- fontcolor = this.getRule(selector+' .'+this.contentClass, 'color');
- fontsize = this.getRule(selector+' .'+this.contentClass, 'fontSize').replace('px','');
- var linkSelector = spaceDiy.checkSelector(selector+ ' .'+this.contentClass+' a');
- linkcolor = this.getRule(linkSelector, 'color');
- linkfontsize = this.getRule(linkSelector, 'fontSize').replace('px','');
- fontcolor = Util.formatColor(fontcolor);
- linkcolor = Util.formatColor(linkcolor);
- bdtstyle = this.getRule(selector, 'borderTopStyle');
- bdrstyle = this.getRule(selector, 'borderRightStyle');
- bdbstyle = this.getRule(selector, 'borderBottomStyle');
- bdlstyle = this.getRule(selector, 'borderLeftStyle');
- bdtwidth = this.getRule(selector, 'borderTopWidth');
- bdrwidth = this.getRule(selector, 'borderRightWidth');
- bdbwidth = this.getRule(selector, 'borderBottomWidth');
- bdlwidth = this.getRule(selector, 'borderLeftWidth');
- bdtcolor = this.getRule(selector, 'borderTopColor');
- bdrcolor = this.getRule(selector, 'borderRightColor');
- bdbcolor = this.getRule(selector, 'borderBottomColor');
- bdlcolor = this.getRule(selector, 'borderLeftColor');
- bgcolor = Util.formatColor(bgcolor);
- bdtcolor = Util.formatColor(bdtcolor);
- bdrcolor = Util.formatColor(bdrcolor);
- bdbcolor = Util.formatColor(bdbcolor);
- bdlcolor = Util.formatColor(bdlcolor);
- margint = this.getRule(selector, 'marginTop').replace('px','');
- marginr = this.getRule(selector, 'marginRight').replace('px','');
- marginb = this.getRule(selector, 'marginBottom').replace('px','');
- marginl = this.getRule(selector, 'marginLeft').replace('px','');
- if (objType == 1) {
- selector = selector + ' .'+this.contentClass;
- cmargint = this.getRule(selector, 'marginTop').replace('px','');
- cmarginr = this.getRule(selector, 'marginRight').replace('px','');
- cmarginb = this.getRule(selector, 'marginBottom').replace('px','');
- cmarginl = this.getRule(selector, 'marginLeft').replace('px','');
- }
- diyClassName = this.getDiyClassName(id,0);
- var widtharr = [];
- for (var k=0;k<11;k++) {
- var key = k+'px';
- widtharr.push({'key':key,'value':key});
- }
- var bigarr = [];
- for (var k=0;k<31;k++) {
- key = k+'px';
- bigarr.push({'key':key,'value':key});
- }
- var repeatarr = [{'key':'平铺','value':'repeat'},{'key':'不平铺','value':'no-repeat'},{'key':'横向平铺','value':'repeat-x'},{'key':'纵向平铺','value':'repeat-y'}];
- var stylearr = [{'key':'无样式','value':'none'},{'key':'实线','value':'solid'},{'key':'点线','value':'dotted'},{'key':'虚线','value':'dashed'}];
- var table = '<table class="tfm">';
- table += '<tr><th>字体</th><td><input type="text" id="fontsize" class="px p_fre vm" value="'+fontsize+'" size="2" />px <input type="text" id="fontcolor" class="px p_fre vm" value="'+fontcolor+'" size="2" />';
- table += getColorPalette(id+'_fontPalette', 'fontcolor' ,fontcolor)+'</td></tr>';
- table += '<tr><th>链接</th><td><input type="text" id="linkfontsize" class="px p_fre vm" value="'+linkfontsize+'" size="2" />px <input type="text" id="linkcolor" class="px p_fre vm" value="'+linkcolor+'" size="2" />';
- table += getColorPalette(id+'_linkPalette', 'linkcolor' ,linkcolor)+'</td></tr>';
- var ulclass = 'borderul', opchecked = '';
- if (bdtwidth != '' || bdtcolor != '' ) {
- ulclass = 'borderula';
- opchecked = ' checked="checked"';
- }
- table += '<tr><th>边框</th><td><ul id="borderul" class="'+ulclass+'">';
- table += '<li><label>上</label><select class="ps vm" id="bdtwidth" ><option value="">大小</option>'+this.getOption(widtharr,bdtwidth)+'</select>';
- table += ' <select class="ps vm" id="bdtstyle" ><option value="">样式</option>'+this.getOption(stylearr,bdtstyle)+'</select>';
- table += ' 颜色 <input type="text" id="bdtcolor" class="px p_fre vm" value="'+bdtcolor+'" size="7" />';
- table += getColorPalette(id+'_bdtPalette', 'bdtcolor' ,bdtcolor)+'</li>';
- table += '<li class="bordera mtn"><label>右</label><select class="ps vm" id="bdrwidth" ><option value="">大小</option>'+this.getOption(widtharr,bdrwidth)+'</select>';
- table += ' <select class="ps vm" id="bdrstyle" ><option value="">样式</option>'+this.getOption(stylearr,bdrstyle)+'</select>';
- table += ' 颜色 <input type="text" id="bdrcolor" class="px p_fre vm" value="'+bdrcolor+'" size="7" />';
- table += getColorPalette(id+'_bdrPalette', 'bdrcolor' ,bdrcolor)+'</li>';
- table += '<li class="bordera mtn"><label>下</label><select class="ps vm" id="bdbwidth" ><option value="">大小</option>'+this.getOption(widtharr,bdbwidth)+'</select>';
- table += ' <select class="ps vm" id="bdbstyle" ><option value="">样式</option>'+this.getOption(stylearr,bdbstyle)+'</select>';
- table += ' 颜色 <input type="text" id="bdbcolor" class="px p_fre vm" value="'+bdbcolor+'" size="7" />';
- table += getColorPalette(id+'_bdbPalette', 'bdbcolor' ,bdbcolor)+'</li>';
- table += '<li class="bordera mtn"><label>左</label><select class="ps vm" id="bdlwidth" ><option value="">大小</option>'+this.getOption(widtharr,bdlwidth)+'</select>';
- table += ' <select class="ps vm" id="bdlstyle" ><option value="">样式</option>'+this.getOption(stylearr,bdlstyle)+'</select>';
- table += ' 颜色 <input type="text" id="bdlcolor" class="px p_fre vm" value="'+bdlcolor+'" size="7" />';
- table += getColorPalette(id+'_bdlPalette', 'bdlcolor' ,bdlcolor)+'</li>';
- table += '</ul><p class="ptm"><label><input id="borderop" type="checkbox" value="1" class="pc"'+opchecked+' onclick="$(\'borderul\').className = $(\'borderul\').className == \'borderul\' ? \'borderula\' : \'borderul\'">分别设置</label></p></td></tr>';
- bigarr = [];
- for (k=-20;k<31;k++) {
- key = k+'px';
- bigarr.push({'key':key,'value':key});
- }
- ulclass = 'borderul', opchecked = '';
- if (margint != '') {
- ulclass = 'borderula';
- opchecked = ' checked="checked"';
- }
- table += '<tr><th>外边距</th><td><div id="margindiv" class="'+ulclass+'"><span><label>上</label> <input type="text" id="margint" class="px p_fre vm" value="'+margint+'" size="1"/>px </span>';
- table += '<span class="bordera"><label>右</label> <input type="text" id="marginr" class="px p_fre vm" value="'+marginr+'" size="1" />px </span>';
- table += '<span class="bordera"><label>下</label> <input type="text" id="marginb" class="px p_fre vm" value="'+marginb+'" size="1" />px </span>';
- table += '<span class="bordera"><label>左</label> <input type="text" id="marginl" class="px p_fre vm" value="'+marginl+'" size="1" />px</span>';
- table += '</div><p class="ptm"><label><input id="marginop" type="checkbox" value="1" class="pc"'+opchecked+' onclick="$(\'margindiv\').className = $(\'margindiv\').className == \'borderul\' ? \'borderula\' : \'borderul\'">分别设置</label></p></td></tr>';
- if (objType == 1) {
- ulclass = 'borderul', opchecked = '';
- if (cmargint != '') {
- ulclass = 'borderula';
- opchecked = ' checked="checked"';
- }
- table += '<tr><th>内边距</th><td><div id="cmargindiv" class="'+ulclass+'"><span><label>上</label> <input class="px p_fre" id="cmargint" value="'+cmargint+'" size="1" />px </span>';
- table += '<span class="bordera"><label>右</label> <input class="px p_fre" id="cmarginr" value="'+cmarginr+'" size="1" />px </span>';
- table += '<span class="bordera"><label>下</label> <input class="px p_fre" id="cmarginb" value="'+cmarginb+'" size="1" />px </span>';
- table += '<span class="bordera"><label>左</label> <input class="px p_fre" id="cmarginl" value="'+cmarginl+'" size="1" />px </span>';
- table += '</div><p class="ptm"><label><input id="cmarginop" type="checkbox" value="1" class="pc"'+opchecked+' onclick="$(\'cmargindiv\').className = $(\'cmargindiv\').className == \'borderul\' ? \'borderula\' : \'borderul\'"> 分别设置</label></p></td></tr>';
- }
- table += '<tr><th>背景颜色</th><td><input type="text" id="bgcolor" class="px p_fre vm" value="'+bgcolor+'" size="4" />';
- table += getColorPalette(id+'_bgcPalette', 'bgcolor' ,bgcolor)+'</td></tr>';
- table += '<tr><th>背景图片</th><td><input type="text" id="bgimage" class="px p_fre vm" value="'+bgimage+'" size="25" /> <select class="ps vm" id="bgrepeat" >'+this.getOption(repeatarr,bgrepeat)+'</select></td></tr>';
- var classarr = objType == 1 ? this.blockDefaultClass : this.frameDefaultClass;
- table += '<tr><th>指定class</th><td><input type="text" id="diyClassName" class="px p_fre" value="'+diyClassName+'" size="8" /> <select class="ps vm" id="bgrepeat" onchange="$(\'diyClassName\').value=this.value;" >'+this.getOption(classarr, diyClassName)+'</select></td></tr>';
- table += '</table>';
- var wname = objType ? '模块' : '框架';
- html = '<div class="c diywin" style="width:450px;position:relative;">'+table+'</div>';
- var h = '<h3 class="flb"><em>编辑'+wname+'样式</em><span><a href="javascript:;" class="flbc" onclick="drag.closeStyleEdit(\''+id+'\');return false;" title="关闭">\n\
- 关闭</a></span></h3>';
- var f = '<p class="o pns"><button onclick="drag.saveStyle(\''+id+'\');drag.closeStyleEdit(\''+id+'\');" class="pn pnc" value="true">\n\
- <strong>确定</strong></button><button onclick="drag.closeStyleEdit(\''+id+'\')" class="pn" value="true"><strong>取消</strong></button></p>';
- this.removeMenu(e);
- showWindow('eleStyle',h + html + f, 'html', 0);
- },
- closeStyleEdit : function (id) {
- this.deleteFrame([id+'_bgcPalette',id+'_bdtPalette',id+'_bdrPalette',id+'_bdbPalette',id+'_bdlPalette',id+'_fontPalette',id+'_linkPalette']);
- hideWindow('eleStyle');
- },
- saveStyle : function (id) {
- var className = this.getDiyClassName(id);
- var diyClassName = $('diyClassName').value;
- $(id).className = diyClassName+' '+className[2]+' '+className[1];
- var obj = this.getObjByName(id);
- var objType = obj instanceof Block ? 1 : 0;
- if (objType == 1) this.saveBlockClassName(id,diyClassName);
- var selector = '#'+id;
- var random = Math.random();
- spaceDiy.setStyle(selector, 'background-color', $('bgcolor').value, random);
- var bgimage = $('bgimage').value && $('bgimage') != 'none' ? Util.url($('bgimage').value) : '';
- var bgrepeat = bgimage ? $('bgrepeat').value : '';
- if ($('bgcolor').value != '' && bgimage == '') bgimage = 'none';
- spaceDiy.setStyle(selector, 'background-image', bgimage, random);
- spaceDiy.setStyle(selector, 'background-repeat', bgrepeat, random);
- spaceDiy.setStyle(selector+' .'+this.contentClass, 'color', $('fontcolor').value, random);
- spaceDiy.setStyle(selector+' .'+this.contentClass, 'font-size', this.formatValue('fontsize'), random);
- spaceDiy.setStyle(spaceDiy.checkSelector(selector+' .'+this.contentClass+' a'), 'color', $('linkcolor').value, random);
- var linkfontsize = parseInt($('linkfontsize').value);
- linkfontsize = isNaN(linkfontsize) ? '' : linkfontsize+'px';
- spaceDiy.setStyle(spaceDiy.checkSelector(selector+' .'+this.contentClass+' a'), 'font-size', this.formatValue('linkfontsize'), random);
- if ($('borderop').checked) {
- var bdtwidth = $('bdtwidth').value,bdrwidth = $('bdrwidth').value,bdbwidth = $('bdbwidth').value,bdlwidth = $('bdlwidth').value;
- var bdtstyle = $('bdtstyle').value,bdrstyle = $('bdrstyle').value,bdbstyle = $('bdbstyle').value,bdlstyle = $('bdlstyle').value;
- var bdtcolor = $('bdtcolor').value,bdrcolor = $('bdrcolor').value,bdbcolor = $('bdbcolor').value,bdlcolor = $('bdlcolor').value;
- } else {
- bdlwidth = bdbwidth = bdrwidth = bdtwidth = $('bdtwidth').value;
- bdlstyle = bdbstyle = bdrstyle = bdtstyle = $('bdtstyle').value;
- bdlcolor = bdbcolor = bdrcolor = bdtcolor = $('bdtcolor').value;
- }
- spaceDiy.setStyle(selector, 'border', '', random);
- spaceDiy.setStyle(selector, 'border-top-width', bdtwidth, random);
- spaceDiy.setStyle(selector, 'border-right-width', bdrwidth, random);
- spaceDiy.setStyle(selector, 'border-bottom-width', bdbwidth, random);
- spaceDiy.setStyle(selector, 'border-left-width', bdlwidth, random);
- spaceDiy.setStyle(selector, 'border-top-style', bdtstyle, random);
- spaceDiy.setStyle(selector, 'border-right-style', bdrstyle, random);
- spaceDiy.setStyle(selector, 'border-bottom-style', bdbstyle, random);
- spaceDiy.setStyle(selector, 'border-left-style', bdlstyle, random);
- spaceDiy.setStyle(selector, 'border-top-color', bdtcolor, random);
- spaceDiy.setStyle(selector, 'border-right-color', bdrcolor, random);
- spaceDiy.setStyle(selector, 'border-bottom-color', bdbcolor, random);
- spaceDiy.setStyle(selector, 'border-left-color', bdlcolor, random);
- if ($('marginop').checked) {
- var margint = this.formatValue('margint'),marginr = this.formatValue('marginr'), marginb = this.formatValue('marginb'), marginl = this.formatValue('marginl');
- } else {
- marginl = marginb = marginr = margint = this.formatValue('margint');
- }
- spaceDiy.setStyle(selector, 'margin-top',margint, random);
- spaceDiy.setStyle(selector, 'margin-right', marginr, random);
- spaceDiy.setStyle(selector, 'margin-bottom', marginb, random);
- spaceDiy.setStyle(selector, 'margin-left', marginl, random);
- if (objType == 1) {
- if ($('cmarginop').checked) {
- var cmargint = this.formatValue('cmargint'),cmarginr = this.formatValue('cmarginr'), cmarginb = this.formatValue('cmarginb'), cmarginl = this.formatValue('cmarginl');
- } else {
- cmarginl = cmarginb = cmarginr = cmargint = this.formatValue('cmargint');
- }
- selector = selector + ' .'+this.contentClass;
- spaceDiy.setStyle(selector, 'margin-top', cmargint, random);
- spaceDiy.setStyle(selector, 'margin-right', cmarginr, random);
- spaceDiy.setStyle(selector, 'margin-bottom', cmarginb, random);
- spaceDiy.setStyle(selector, 'margin-left', cmarginl, random);
- }
- this.setClose();
- },
- formatValue : function(id) {
- var value = '';
- if ($(id)) {
- value = parseInt($(id).value);
- value = isNaN(value) ? '' : value+'px';
- }
- return value;
- },
- saveBlockClassName : function(id,className){
- if (!$('saveblockclassname')){
- var dom = document.createElement('div');
- dom.innerHTML = '<form id="saveblockclassname" method="post" action=""><input type="hidden" name="classname" value="" />\n\
- <input type="hidden" name="formhash" value="'+document.diyform.formhash.value+'" /><input type="hidden" name="saveclassnamesubmit" value="true"/></form>';
- $('append_parent').appendChild(dom.childNodes[0]);
- }
- $('saveblockclassname').action = 'portal.php?mod=portalcp&ac=block&op=saveblockclassname&bid='+id.replace('portal_block_','');
- document.forms.saveblockclassname.classname.value = className;
- ajaxpost('saveblockclassname','ajaxwaitid');
- },
- closeTitleEdit : function (fid) {
- this.deleteFrame(fid+'bgPalette_0');
- for (var i = 0 ; i<=10; i++) {
- this.deleteFrame(fid+'Palette_'+i);
- }
- hideWindow('frameTitle');
- },
- openTitleEdit : function (e) {
- if (typeof e == 'object') {
- e = Util.event(e);
- var fid = e.aim.id.replace('cmd_','');
- } else {
- fid = e;
- }
- var obj = this.getObjByName(fid);
- var titlename = obj instanceof Block ? '模块' : '框架';
- var repeatarr = [{'key':'平铺','value':'repeat'},{'key':'不平铺','value':'no-repeat'},{'key':'横向平铺','value':'repeat-x'},{'key':'纵向平铺','value':'repeat-y'}];
- var len = obj.titles.length;
- var bgimage = obj.titles.style && obj.titles.style['background-image'] ? obj.titles.style['background-image'] : '';
- bgimage = bgimage != 'none' ? Util.trimUrl(bgimage) : '';
- var bgcolor = obj.titles.style && obj.titles.style['background-color'] ? obj.titles.style['background-color'] : '';
- bgcolor = Util.formatColor(bgcolor);
- var bgrepeat = obj.titles.style && obj.titles.style['background-repeat'] ? obj.titles.style['background-repeat'] : '';
- var common = '<table class="tfm">';
- common += '<tr><th>背景图片:</th><td><input type="text" id="titleBgImage" class="px p_fre" value="'+bgimage+'" /> <select class="ps vm" id="titleBgRepeat" >'+this.getOption(repeatarr,bgrepeat)+'</select></td></tr>';
- common += '<tr><th>背景颜色:</th><td><input type="text" id="titleBgColor" class="px p_fre" value="'+bgcolor+'" size="7" />';
- common += getColorPalette(fid+'bgPalette_0', 'titleBgColor' ,bgcolor)+'</td></tr>';
- if (obj instanceof Tab) {
- var switchArr = [{'key':'点击','value':'click'},{'key':'滑过','value':'mouseover'}];
- var switchType = obj.titles['switchType'] ? obj.titles['switchType'][0] : 'click';
- common += '<tr><th>切换类型:</th><td><select class="ps" id="switchType" >'+this.getOption(switchArr,switchType)+'</select></td></tr>';
- }
- common += '</table><hr class="l">';
- var li = '';
- li += '<div id="titleInput_0"><table class="tfm"><tr><th>'+titlename+'标题:</th><td><input type="text" id="titleText_0" class="px p_fre" value="`title`" /></td></tr>';
- li += '<tr><th>链接:</th><td><input type="text" id="titleLink_0" class="px p_fre" value="`link`" /></td></tr>';
- li += '<tr><th>图片:</th><td><input type="text" id="titleSrc_0" class="px p_fre" value="`src`" /></td></tr>';
- li += '<tr><th>位置:</th><td><select id="titleFloat_0" class="ps vm"><option value="" `left`>居左</option><option value="right" `right`>居右</option></select>';
- li += ' 偏移量: <input type="text" id="titleMargin_0" class="px p_fre vm" value="`margin`" size="2" />px</td></tr>';
- li += '<tr><th>字体:</th><td><select class="ps vm" id="titleSize_0" ><option value="">大小</option>`size`</select>';
- li += ' 颜色: <input type="text" id="titleColor_0" class="px p_fre vm" value="`color`" size="4" />';
- li += getColorPalette(fid+'Palette_0', 'titleColor_0' ,'`color`');
- li += '</td></tr><tr><td colspan="2"><hr class="l"></td></tr></table></div>';
- var html = '';
- if (obj.titles['first']) {
- html = this.getTitleHtml(obj, 'first', li);
- }
- for (var i = 0; i < len; i++ ) {
- html += this.getTitleHtml(obj, i, li);
- }
- if (!html) {
- var bigarr = [];
- for (var k=7;k<27;k++) {
- var key = k+'px';
- bigarr.push({'key':key,'value':key});
- }
- var ssize = this.getOption(bigarr,ssize);
- html = li.replace('`size`', ssize).replace(/`\w+`/g, '');
- }
- var c = len + 1;
- html = '<div class="c diywin" style="width:450px;height:400px; overflow:auto;"><table cellspacing="0" cellpadding="0" class="tfm pns"><tr><th></th><td><button type="button" id="addTitleInput" class="pn" onclick="drag.addTitleInput('+c+');"><em>添加新标题</em></button></td></tr></table><div id="titleEdit">'+html+common+'</div></div>';
- var h = '<h3 class="flb"><em>编辑'+titlename+'标题</em><span><a href="javascript:;" class="flbc" onclick="drag.closeTitleEdit(\''+fid+'\');return false;" title="关闭">\n\
- 关闭</a></span></h3>';
- var f = '<p class="o pns"><button onclick="drag.saveTitleEdit(\''+fid+'\');drag.closeTitleEdit(\''+fid+'\');" class="pn pnc" value="true">\n\
- <strong>确定</strong></button><button onclick="drag.closeTitleEdit(\''+fid+'\')" class="pn" value="true"><strong>取消</strong></button></p>';
- this.removeMenu(e);
- showWindow('frameTitle',h + html + f, 'html', 0);
- },
- getTitleHtml : function (obj, i, li) {
- var shtml = '',stitle = '',slink = '',sfloat = '',ssize = '',scolor = '',margin = '',src = '';
- var c = i == 'first' ? '0' : i+1;
- stitle = obj.titles[i]['text'] ? obj.titles[i]['text'] : '';
- slink = obj.titles[i]['href'] ? obj.titles[i]['href'] : '';
- sfloat = obj.titles[i]['float'] ? obj.titles[i]['float'] : '';
- margin = obj.titles[i]['margin'] ? obj.titles[i]['margin'] : '';
- ssize = obj.titles[i]['font-size'] ? obj.titles[i]['font-size']+'px' : '';
- scolor = obj.titles[i]['color'] ? obj.titles[i]['color'] : '';
- src = obj.titles[i]['src'] ? obj.titles[i]['src'] : '';
- var bigarr = [];
- for (var k=7;k<27;k++) {
- var key = k+'px';
- bigarr.push({'key':key,'value':key});
- }
- ssize = this.getOption(bigarr,ssize);
- shtml = li.replace(/_0/g, '_' + c).replace('`title`', stitle).replace('`link`', slink).replace('`size`', ssize).replace('`src`',src);
- var left = sfloat == '' ? 'selected' : '';
- var right = sfloat == 'right' ? 'selected' : '';
- scolor = Util.formatColor(scolor);
- shtml = shtml.replace(/`color`/g, scolor).replace('`left`', left).replace('`right`', right).replace('`margin`', margin);
- return shtml;
- },
- addTitleInput : function (c) {
- if (c > 10) return false;
- var pre = $('titleInput_'+(c-1));
- var dom = document.createElement('div');
- dom.className = 'tfm';
- var exp = new RegExp('_'+(c-1), 'g');
- dom.id = 'titleInput_'+c;
- dom.innerHTML = pre.innerHTML.replace(exp, '_'+c);
- Util.insertAfter(dom, pre);
- $('addTitleInput').onclick = function () {drag.addTitleInput(c+1)};
- },
- saveTitleEdit : function (fid) {
- var obj = this.getObjByName(fid);
- var ele = $(fid);
- var children = ele.childNodes;
- var title = first = '';
- var hastitle = 0;
- var c = 0;
- for (var i in children) {
- if (typeof children[i] == 'object' && Util.hasClass(children[i], this.titleClass)) {
- title = children[i];
- break;
- }
- }
- if (title) {
- var arrDel = [];
- for (var i in title.childNodes) {
- if (typeof title.childNodes[i] == 'object' && Util.hasClass(title.childNodes[i], this.titleTextClass)) {
- first = title.childNodes[i];
- this._createTitleHtml(first, c);
- if (first.innerHTML != '') hastitle = 1;
- } else if (typeof title.childNodes[i] == 'object' && !Util.hasClass(title.childNodes[i], this.moveableObject)) {
- arrDel.push(title.childNodes[i]);
- }
- }
- for (var i = 0; i < arrDel.length; i++) {
- title.removeChild(arrDel[i]);
- }
- } else {
- var titleClassName = '';
- if(obj instanceof Tab) {
- titleClassName = 'tab-';
- } else if(obj instanceof Frame) {
- titleClassName = 'frame-';
- } else if(obj instanceof Block) {
- titleClassName = 'block';
- }
- title = document.createElement('div');
- title.className = titleClassName + 'title' + ' '+ this.titleClass;
- ele.insertBefore(title,ele.firstChild);
- }
- if (!first) {
- var first = document.createElement('span');
- first.className = this.titleTextClass;
- this._createTitleHtml(first, c);
- if (first.innerHTML != '') {
- title.insertBefore(first, title.firstChild);
- hastitle = 1;
- }
- }
- while ($('titleText_'+(++c))) {
- var dom = document.createElement('span');
- dom.className = 'subtitle';
- this._createTitleHtml(dom, c);
- if (dom.innerHTML != '') {
- if (dom.innerHTML) Util.insertAfter(dom, first);
- first = dom;
- hastitle = 1;
- }
- }
- var titleBgImage = $('titleBgImage').value;
- titleBgImage = titleBgImage && titleBgImage != 'none' ? Util.url(titleBgImage) : '';
- if ($('titleBgColor').value != '' && titleBgImage == '') titleBgImage = 'none';
- title.style['backgroundImage'] = titleBgImage;
- if (titleBgImage) {
- title.style['backgroundRepeat'] = $('titleBgRepeat').value;
- }
- title.style['backgroundColor'] = $('titleBgColor').value;
- if ($('switchType')) {
- title.switchType = [];
- title.switchType[0] = $('switchType').value ? $('switchType').value : 'click';
- title.setAttribute('switchtype',title.switchType[0]);
- }
- obj.titles = [];
- if (hastitle == 1) {
- this._initTitle(obj,title);
- } else {
- if (!(obj instanceof Tab)) title.parentNode.removeChild(title);
- title = '';
- this.initPosition();
- }
- if (obj instanceof Block) this.saveBlockTitle(fid,title);
- this.setClose();
- },
- _createTitleHtml : function (ele,tid) {
- var html = '',img = '';
- tid = '_' + tid ;
- var ttext = $('titleText'+tid).value;
- var tlink = $('titleLink'+tid).value;
- var tfloat = $('titleFloat'+tid).value;
- var tmargin_ = tfloat != '' ? tfloat : 'left';
- var tmargin = $('titleMargin'+tid).value;
- var tsize = $('titleSize'+tid).value;
- var tcolor = $('titleColor'+tid).value;
- var src = $('titleSrc'+tid).value;
- var divStyle = 'float:'+tfloat+';margin-'+tmargin_+':'+tmargin+'px;font-size:'+tsize;
- var aStyle = 'color:'+tcolor+' !important;';
- if (src) {
- img = '<img class="vm" src="'+src+'" alt="'+ttext+'" />';
- }
- if (ttext || img) {
- if (tlink) {
- Util.setStyle(ele, divStyle);
- html = '<a href='+tlink+' target="_blank" style="'+aStyle+'">'+img+ttext+'</a>';
- } else {
- Util.setStyle(ele, divStyle+';'+aStyle);
- html = img+ttext;
- }
- }
- ele.innerHTML = html;
- return true;
- },
- saveBlockTitle : function (id,title) {
- if (!$('saveblocktitle')){
- var dom = document.createElement('div');
- dom.innerHTML = '<form id="saveblocktitle" method="post" action=""><input type="hidden" name="title" value="" />\n\
- <input type="hidden" name="formhash" value="'+document.diyform.formhash.value+'" /><input type="hidden" name="savetitlesubmit" value="true"/></form>';
- $('append_parent').appendChild(dom.childNodes[0]);
- }
- $('saveblocktitle').action = 'portal.php?mod=portalcp&ac=block&op=saveblocktitle&bid='+id.replace('portal_block_','');
- var html = !title ? '' : title.outerHTML;
- document.forms.saveblocktitle.title.value = html;
- ajaxpost('saveblocktitle','ajaxwaitid');
- },
- removeBlock : function (e, flag) {
- if ( typeof e !== 'string') {
- e = Util.event(e);
- var id = e.aim.id.replace('cmd_','');
- } else {
- var id = e;
- }
- if ($(id) == null) return false;
- var obj = this.getObjByName(id);
- if (!flag) {
- if (!confirm('您确实要删除吗,删除以后将不可恢复')) return false;
- }
- if (obj instanceof Block) {
- this.delBlock(id);
- } else if (obj instanceof Frame) {
- this.delFrame(obj);
- }
- $(id).parentNode.removeChild($(id));
- var content = $(id+'_content');
- if(content) {
- content.parentNode.removeChild(content);
- }
- this.setClose();
- this.initPosition();
- this.initChkBlock();
- },
- delBlock : function (bid) {
- spaceDiy.removeCssSelector('#'+bid);
- this.stopSlide(bid);
- },
- delFrame : function (frame) {
- spaceDiy.removeCssSelector('#'+frame.name);
- for (var i in frame['columns']) {
- if (frame['columns'][i] instanceof Column) {
- var children = frame['columns'][i]['children'];
- for (var j in children) {
- if (children[j] instanceof Frame) {
- this.delFrame(children[j]);
- } else if (children[j] instanceof Block) {
- this.delBlock(children[j]['name']);
- }
- }
- }
- }
- this.setClose();
- },
- initChkBlock : function (data) {
- if (typeof name == 'undefined' || data == null ) data = this.data;
- if ( data instanceof Frame) {
- this.initChkBlock(data['columns']);
- } else if (data instanceof Block) {
- var el = $('chk'+data.name);
- if (el != null) el.checked = true;
- } else if (typeof data == 'object') {
- for (var i in data) {
- this.initChkBlock(data[i]);
- }
- }
- },
- getBlockData : function (blockname) {
- var bid = this.dragObj.id;
- var eleid = bid;
- if (bid.indexOf('portal_block_') != -1) {
- eleid = 0;
- }else {
- bid = 0;
- }
- showWindow('showblock', 'portal.php?mod=portalcp&ac=block&op=block&classname='+blockname+'&bid='+bid+'&eleid='+eleid+'&tpl='+document.diyform.template.value,'get',-1);
- drag.initPosition();
- this.fn = '';
- return true;
- },
- stopSlide : function (id) {
- if (typeof slideshow == 'undefined' || typeof slideshow.entities == 'undefined') return false;
- var slidebox = $C('slidebox',$(id));
- if(slidebox && slidebox.length > 0) {
- if(slidebox[0].id) {
- var timer = slideshow.entities[slidebox[0].id].timer;
- if(timer) clearTimeout(timer);
- slideshow.entities[slidebox[0].id] = '';
- }
- }
- },
- blockForceUpdate : function (e,all) {
- if ( typeof e !== 'string') {
- e = Util.event(e);
- var id = e.aim.id.replace('cmd_','');
- } else {
- var id = e;
- }
- if ($(id) == null) return false;
- var bid = id.replace('portal_block_', '');
- var bcontent = $(id+'_content');
- if (!bcontent) {
- bcontent = document.createElement('div');
- bcontent.id = id+'_content';
- bcontent.className = this.contentClass;
- }
- this.stopSlide(id);
- var height = Util.getFinallyStyle(bcontent, 'height');
- bcontent.style.lineHeight = height == 'auto' ? '' : (height == '0px' ? '20px' : height);
- var boldcontent = bcontent.innerHTML;
- bcontent.innerHTML = '<center>正在加载内容...</center>';
- var x = new Ajax();
- x.get('portal.php?mod=portalcp&ac=block&op=getblock&forceupdate=1&inajax=1&bid='+bid+'&tpl='+document.diyform.template.value, function(s) {
- if(s.indexOf('errorhandle_') != -1) {
- bcontent.innerHTML = boldcontent;
- runslideshow();
- showDialog('抱歉,您没有权限添加或编辑模块', 'alert');
- doane();
- } else {
- var obj = document.createElement('div');
- obj.innerHTML = s;
- bcontent.parentNode.removeChild(bcontent);
- $(id).innerHTML = obj.childNodes[0].innerHTML;
- evalscript(s);
- if(s.indexOf('runslideshow()') != -1) {runslideshow();}
- drag.initPosition();
- if (all) {drag.getBlocks();}
- }
- });
- },
- frameExport : function (e) {
- var flag = true;
- if (drag.isChange) {
- flag = confirm('您已经做过修改,请保存后再做导出,否则导出的数据将不包括您这次所做的修改。');
- }
- if (flag) {
- if ( typeof e == 'object') {
- e = Util.event(e);
- var frame = e.aim.id.replace('cmd_','');
- } else {
- frame = e == undefined ? '' : e;
- }
- if (!$('frameexport')){
- var dom = document.createElement('div');
- dom.innerHTML = '<form id="frameexport" method="post" action="" target="_blank"><input type="hidden" name="frame" value="" />\n\
- <input type="hidden" name="tpl" value="'+document.diyform.template.value+'" />\n\
- <input type="hidden" name="tpldirectory" value="'+document.diyform.tpldirectory.value+'" />\n\
- <input type="hidden" name="diysign" value="'+document.diyform.diysign.value+'" />\n\
- <input type="hidden" name="formhash" value="'+document.diyform.formhash.value+'" /><input type="hidden" name="exportsubmit" value="true"/></form>';
- $('append_parent').appendChild(dom.childNodes[0]);
- }
- $('frameexport').action = 'portal.php?mod=portalcp&ac=diy&op=export';
- document.forms.frameexport.frame.value = frame;
- document.forms.frameexport.submit();
- }
- doane();
- },
- openFrameImport : function (type) {
- type = type || 0;
- showWindow('showimport','portal.php?mod=portalcp&ac=diy&op=import&tpl='+document.diyform.template.value+'&tpldirectory='+document.diyform.tpldirectory.value+'&diysign='+document.diyform.diysign.value+'&type='+type, 'get');
- },
- endBlockForceUpdateBatch : function () {
- if($('allupdate')) {
- $('allupdate').innerHTML = '已操作完成。';
- $('fwin_dialog_submit').style.display = '';
- $('fwin_dialog_cancel').style.display = 'none';
- }
- this.initPosition();
- },
- getBlocks : function () {
- if (this.blocks.length == 0) {
- this.endBlockForceUpdateBatch();
- }
- if (this.blocks.length > 0) {
- var cur = this.blocksLen - this.blocks.length;
- if($('allupdate')) {
- $('allupdate').innerHTML = '共<span style="color:blue">'+this.blocksLen+'</span>个模块,正在更新第<span style="color:red">'+cur+'</span>个,已完成<span style="color:red">'+(parseInt(cur / this.blocksLen * 100)) + '%</span>';
- var bid = 'portal_block_'+this.blocks.pop();
- this.blockForceUpdate(bid,true);
- }
- }
- },
- blockForceUpdateBatch : function (blocks) {
- if (blocks) {
- this.blocks = blocks;
- } else {
- this.initPosition();
- this.blocks = this.allBlocks;
- }
- this.blocksLen = this.blocks.length;
- showDialog('<div id="allupdate" style="width:350px;line-height:28px;">开始更新...</div>','confirm','更新模块数据', '', true, 'drag.endBlockForceUpdateBatch()');
- var wait = function() {
- if($('fwin_dialog_submit')) {
- $('fwin_dialog_submit').style.display = 'none';
- $('fwin_dialog_cancel').className = 'pn pnc';
- setTimeout(function(){drag.getBlocks()},500);
- } else {
- setTimeout(wait,100);
- }
- };
- wait();
- doane();
- },
- clearAll : function () {
- if (confirm('您确实要清空页面上所在DIY数据吗,清空以后将不可恢复')) {
- for (var i in this.data) {
- for (var j in this.data[i]) {
- if (typeof(this.data[i][j]) == 'object' && this.data[i][j].name.indexOf('_temp')<0) {
- this.delFrame(this.data[i][j]);
- $(this.data[i][j].name).parentNode.removeChild($(this.data[i][j].name));
- }
- }
- }
- this.initPosition();
- this.setClose();
- }
- doane();
- },
- createObj : function (e,objType,contentType) {
- if (objType == 'block' && !this.checkHasFrame()) {alert("提示:未找到框架,请先添加框架。");spaceDiy.getdiy('frame');return false;}
- e = Util.event(e);
- if(e.which != 1 ) {return false;}
- var html = '',offWidth = 0;
- if (objType == 'frame') {
- html = this.getFrameHtml(contentType);
- offWidth = 600;
- } else if (objType == 'block') {
- html = this.getBlockHtml(contentType);
- offWidth = 200;
- this.fn = function (e) {drag.getBlockData(contentType);};
- } else if (objType == 'tab') {
- html = this.getTabHtml(contentType);
- offWidth = 300;
- }
- var ele = document.createElement('div');
- ele.innerHTML = html;
- ele = ele.childNodes[0];
- document.body.appendChild(ele);
- this.dragObj = this.overObj = ele;
- if (!this.getTmpBoxElement()) return false;
- var scroll = Util.getScroll();
- this.dragObj.style.position = 'absolute';
- this.dragObj.style.left = e.clientX + scroll.l - 60 + "px";
- this.dragObj.style.top = e.clientY + scroll.t - 10 + "px";
- this.dragObj.style.width = offWidth + 'px';
- this.dragObj.style.cursor = 'move';
- this.dragObj.lastMouseX = e.clientX;
- this.dragObj.lastMouseY = e.clientY;
- Util.insertBefore(this.tmpBoxElement,this.overObj);
- Util.addClass(this.dragObj,this.moving);
- this.dragObj.style.zIndex = 500 ;
- this.scroll = Util.getScroll();
- this.newFlag = true;
- var _method = this;
- document.onscroll = function(){Drag.prototype.resetObj.call(_method, e);};
- window.onscroll = function(){Drag.prototype.resetObj.call(_method, e);};
- document.onmousemove = function (e){Drag.prototype.drag.call(_method, e);};
- document.onmouseup = function (e){Drag.prototype.dragEnd.call(_method, e);};
- },
- getFrameHtml : function (type) {
- var id = 'frame'+Util.getRandom(6);
- var className = [this.frameClass,this.moveableObject].join(' ');
- className = className + ' cl frame-' + type;
- var str = '<div id="'+id+'" class="'+className+'">';
- str += '<div id="'+id+'_title" class="'+this.titleClass+' '+this.frameTitleClass+'"><span class="'+this.titleTextClass+'">'+type+'框架</span></div>';
- var cols = type.split('-');
- var clsl='',clsc='',clsr='';
- clsl = ' frame-'+type+'-l';
- clsc = ' frame-'+type+'-c';
- clsr = ' frame-'+type+'-r';
- var len = cols.length;
- if (len == 1) {
- str += '<div id="'+id+'_left" class="'+this.moveableColumn+clsc+'"></div>';
- } else if (len == 2) {
- str += '<div id="'+id+'_left" class="'+this.moveableColumn+clsl+ '"></div>';
- str += '<div id="'+id+'_center" class="'+this.moveableColumn+clsr+ '"></div>';
- } else if (len == 3) {
- str += '<div id="'+id+'_left" class="'+this.moveableColumn+clsl+'"></div>';
- str += '<div id="'+id+'_center" class="'+this.moveableColumn+clsc+'"></div>';
- str += '<div id="'+id+'_right" class="'+this.moveableColumn+clsr+'"></div>';
- }
- str += '</div>';
- return str;
- },
- getTabHtml : function () {
- var id = 'tab'+Util.getRandom(6);
- var className = [this.tabClass,this.moveableObject].join(' ');
- className = className + ' cl';
- var titleClassName = [this.tabTitleClass, this.titleClass, this.moveableColumn, 'cl'].join(' ');
- var str = '<div id="'+id+'" class="'+className+'">';
- str += '<div id="'+id+'_title" class="'+titleClassName+'"><span class="'+this.titleTextClass+'">tab标签</span></div>';
- str += '<div id="'+id+'_content" class="'+this.tabContentClass+'"></div>';
- str += '</div>';
- return str;
- },
- getBlockHtml : function () {
- var id = 'block'+Util.getRandom(6);
- var str = '<div id="'+id+'" class="block move-span"></div>';
- str += '</div>';
- return str;
- },
- setClose : function () {
- if(this.sampleMode) {
- return true;
- } else {
- if (!this.isChange) {
- window.onbeforeunload = function() {
- return '您的数据已经修改,退出将无法保存您的修改。';
- };
- }
- this.isChange = true;
- spaceDiy.enablePreviewButton();
- }
- },
- clearClose : function () {
- this.isChange = false;
- this.isClearClose = true;
- window.onbeforeunload = function () {};
- },
- goonDIY : function () {
- if ($('prefile').value == '1') {
- showDialog('<div style="line-height:28px;">按继续按钮将打开暂存数据并DIY,<br />按删除按钮将删除暂存数据。</div>','confirm','是否继续暂存数据的DIY?', function(){location.replace(location.href+'&preview=yes');}, true, 'spaceDiy.cancelDIY()', '', '继续', '删除');
- } else if (location.search.indexOf('preview=yes') > -1) {
- spaceDiy.enablePreviewButton();
- } else {
- spaceDiy.disablePreviewButton();
- }
- setInterval(function(){spaceDiy.save('savecache', 1);},180000);
- }
- });
- var spaceDiy = new DIY();
- spaceDiy.extend({
- save : function (optype,rejs) {
- optype = typeof optype == 'undefined' ? '' : optype;
- if (optype == 'savecache' && !drag.isChange) {return false;}
- var tplpre = document.diyform.template.value.split(':');
- if (!optype) {
- if (['portal/portal_topic_content', 'portal/list', 'portal/view'].indexOf(tplpre[0]) == -1) {
- if (document.diyform.template.value.indexOf(':') > -1 && !document.selectsave) {
- var schecked = '',dchecked = '';
- if (document.diyform.savemod.value == '1') {
- dchecked = ' checked';
- } else {
- schecked = ' checked';
- }
- showDialog('<form name="selectsave" action="" method="get"><label><input type="radio" value="0" name="savemod"'+schecked+' />应用于此类全部页面</label>\n\
- <label><input type="radio" value="1" name="savemod"'+dchecked+' />只应用于本页面</label></form>','notice', '', spaceDiy.save);
- return false;
- }
- if (document.selectsave) {
- if (document.selectsave.savemod[0].checked) {
- document.diyform.savemod.value = document.selectsave.savemod[0].value;
- } else {
- document.diyform.savemod.value = document.selectsave.savemod[1].value;
- }
- }
- } else {
- document.diyform.savemod.value = 1;
- }
- } else if (optype == 'savecache') {
- if (!drag.isChange) return false;
- this.checkPreview_form();
- document.diyform.rejs.value = rejs ? 0 : 1;
- } else if (optype =='preview') {
- if (drag.isChange) {
- optype = 'savecache';
- } else {
- this.checkPreview_form();
- $('preview_form').submit();
- return false;
- }
- }
- document.diyform.action = document.diyform.action.replace(/[&|\?]inajax=1/, '');
- document.diyform.optype.value = optype;
- document.diyform.spacecss.value = spaceDiy.getSpacecssStr();
- document.diyform.style.value = spaceDiy.style;
- document.diyform.layoutdata.value = drag.getPositionStr();
- document.diyform.gobackurl.value = spaceDiy.cancelDiyUrl();
- drag.clearClose();
- if (optype == 'savecache') {
- document.diyform.handlekey.value = 'diyform';
- ajaxpost('diyform','ajaxwaitid','ajaxwaitid','onerror');
- } else {
- saveUserdata('diy_advance_mode', '');
- document.diyform.submit();
- }
- },
- checkPreview_form : function () {
- if (!$('preview_form')) {
- var dom = document.createElement('div');
- var search = '';
- var sarr = location.search.replace('?','').split('&');
- for (var i = 0;i<sarr.length;i++){
- var kv = sarr[i].split('=');
- if (kv.length>1 && kv[0] != 'diy') {
- search += '<input type="hidden" value="'+kv[1]+'" name="'+kv[0]+'" />';
- }
- }
- search += '<input type="hidden" value="yes" name="preview" />';
- dom.innerHTML = '<form action="'+location.href+'" target="_bloak" method="get" id="preview_form">'+search+'</form>';
- var form = dom.getElementsByTagName('form');
- $('append_parent').appendChild(form[0]);
- }
- },
- cancelDiyUrl : function () {
- return location.href.replace(/[\?|\&]diy\=yes/g,'').replace(/[\?|\&]preview=yes/,'');
- },
- cancel : function () {
- saveUserdata('diy_advance_mode', '');
- if (drag.isClearClose) {
- showDialog('<div style="line-height:28px;">是否保留暂存数据?<br />按确定按钮将保留暂存数据,按取消按钮将删除暂存数据。</div>','confirm','保留暂存数据', function(){location.href = spaceDiy.cancelDiyUrl();}, true, function(){window.onunload=function(){spaceDiy.cancelDIY()};location.href = spaceDiy.cancelDiyUrl();});
- } else {
- location.href = this.cancelDiyUrl();
- }
- },
- recover : function() {
- if (confirm('您确定要恢复到上一版本保存的结果吗?')) {
- drag.clearClose();
- document.diyform.recover.value = '1';
- document.diyform.gobackurl.value = location.href.replace(/(\?diy=yes)|(\&diy=yes)/,'').replace(/[\?|\&]preview=yes/,'');
- document.diyform.submit();
- }
- doane();
- },
- enablePreviewButton : function () {
- if ($('preview')){
- $('preview').className = '';
- if(drag.isChange) {
- $('diy_preview').onclick = function () {spaceDiy.save('savecache');return false;};
- } else {
- $('diy_preview').onclick = function () {spaceDiy.save('preview');return false;};
- }
- Util.show($('savecachemsg'))
- }
- },
- disablePreviewButton : function () {
- if ($('preview')) {
- $('preview').className = 'unusable';
- $('diy_preview').onclick = function () {return false;};
- }
- },
- cancelDIY : function () {
- this.disablePreviewButton();
- document.diyform.optype.value = 'canceldiy';
- var x = new Ajax();
- x.post($('diyform').action+'&inajax=1','optype=canceldiy&diysubmit=1&template='+document.diyform.template.value+'&savemod='+document.diyform.savemod.value+'&formhash='+document.diyform.formhash.value+'&tpldirectory='+document.diyform.tpldirectory.value+'&diysign='+document.diyform.diysign.value,function(s){});
- },
- switchBlockclass : function(blockclass) {
- var navs = $('contentblockclass_nav').getElementsByTagName('a');
- var contents = $('contentblockclass').getElementsByTagName('ul');
- for(var i=0; i<navs.length; i++) {
- if(navs[i].id=='bcnav_'+blockclass) {
- navs[i].className = 'a';
- } else {
- navs[i].className = '';
- }
- }
- for(var i=0; i<contents.length; i++) {
- if(contents[i].id=='contentblockclass_'+blockclass) {
- contents[i].style.display = '';
- } else {
- contents[i].style.display = 'none';
- }
- }
- },
- getdiy : function (type) {
- if (type) {
- var nav = $('controlnav').children;
- for (var i in nav) {
- if (nav[i].className == 'current') {
- nav[i].className = '';
- var contentid = 'content'+nav[i].id.replace('nav', '');
- if ($(contentid)) $(contentid).style.display = 'none';
- }
- }
- $('nav'+type).className = 'current';
- if (type == 'start' || type == 'frame') {
- $('content'+type).style.display = 'block';
- return true;
- }
- if(type == 'blockclass' && $('content'+type).innerHTML !='') {
- $('content'+type).style.display = 'block';
- return true;
- }
- var para = '&op='+type;
- if (arguments.length > 1) {
- for (var i = 1; i < arguments.length; i++) {
- para += '&' + arguments[i] + '=' + arguments[++i];
- }
- }
- var ajaxtarget = type == 'diy' ? 'diyimages' : '';
- var x = new Ajax();
- x.showId = ajaxtarget;
- x.get('portal.php?mod=portalcp&ac=diy'+para+'&inajax=1&ajaxtarget='+ajaxtarget,function(s, x) {
- if (s) {
- if (typeof cpb_frame == 'object' && !BROWSER.ie) {delete cpb_frame;}
- if (!$('content'+type)) {
- var dom = document.createElement('div');
- dom.id = 'content'+type;
- $('controlcontent').appendChild(dom);
- }
- $('content'+type).innerHTML = s;
- $('content'+type).style.display = 'block';
- if (type == 'diy') {
- spaceDiy.setCurrentDiy(spaceDiy.currentDiy);
- if (spaceDiy.styleSheet.rules.length > 0) {
- Util.show('recover_button');
- }
- }
- var evaled = false;
- if(s.indexOf('ajaxerror') != -1) {
- evalscript(s);
- evaled = true;
- }
- if(!evaled && (typeof ajaxerror == 'undefined' || !ajaxerror)) {
- if(x.showId) {
- ajaxupdateevents($(x.showId));
- }
- }
- if(!evaled) evalscript(s);
- }
- });
- }
- }
- });
- spaceDiy.init(1);
- function succeedhandle_diyform (url, message, values) {
- if (values['rejs'] == '1') {
- document.diyform.rejs.value = '';
- parent.$('preview_form').submit();
- }
- spaceDiy.enablePreviewButton();
- return false;
- }
|