mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-22 18:35:35 +08:00
825 lines
36 KiB
PHP
825 lines
36 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
|
|
class desktop_ctl_editor extends desktop_controller{
|
|
|
|
function uploader(){
|
|
$html ='<form action="index.php?ctl=editor&act=save_upload&name='.$_GET['name']
|
|
.'&domid='.$_GET['domid'].'" method="post" enctype="multipart/form-data">';
|
|
$params = array(
|
|
'type'=>'file',
|
|
'name'=>'upload_item',
|
|
);
|
|
|
|
$html .= '<div class="division" style="border:none; text-align:center;">';
|
|
$html .=utils::buildTag($params,'input');
|
|
$html .= '</div>';
|
|
$html .= '<div class="table-action" style="border: none;"><input type="submit" value='.app::get('desktop')->_("上传").' /></div>';
|
|
$html.= '</form>';
|
|
echo $html;
|
|
}
|
|
|
|
function save_upload(){
|
|
$image = $this->app->model('image');
|
|
$file_id = $image->store($_FILES['upload_item']['tmp_name']);
|
|
|
|
if($_GET['domid']){
|
|
$content = $_FILES['upload_item']['name'].' ('.$_FILES['upload_item']['size'].')';
|
|
$content .='<input type="hidden" name="'.($_GET['name']).'" value="'.urlencode($file_id).'" />';
|
|
echo '<script>window.parent.document.getElementById("'.$_GET['domid'].'").innerHTML="'.str_replace('"','\\"',$content).'"</script>';
|
|
}else{
|
|
echo 'ok';
|
|
}
|
|
}
|
|
function save_gpic(){
|
|
$image = $this->app->model('image');
|
|
$image_id = $image->store($_FILES['Filedata']['tmp_name']);
|
|
$image_s = storager($image_id,'s');
|
|
$image_b = storager($image_id,'b');
|
|
$this->pagedata['gimage']['image_id'] = $image_id;
|
|
echo $this->fetch('goods/detail/img/gimage.html');
|
|
}
|
|
|
|
function imglib(){
|
|
|
|
$image_tags[] = array('tag_id'=>null,'tag_name'=>app::get('desktop')->_('所有图片'),'count'=>'12');
|
|
|
|
$this->pagedata['tags'] = &$image_tags;
|
|
ob_start();
|
|
$this->_img_list();
|
|
$this->pagedata['image_list'] = ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
$this->display('common/imglib.html');
|
|
}
|
|
|
|
function _img_list(){
|
|
$img = $this->app->model('image');
|
|
$html='';
|
|
foreach($img->getList('url,s_url,l_url,m_url,image_id,width,height',$filter,0,20) as $item){
|
|
$url = $this->app->base_url().($item['s_url']?$item['s_url']:(
|
|
$item['m_url']?$item['m_url']:(
|
|
$item['l_url']?$item['l_url']:$item['url']
|
|
)
|
|
));
|
|
if( max($item['width'],$item['height'])>96){
|
|
$tag = (($item['width']>$item['height'])?'width=':'height=').'"96"';
|
|
}else{
|
|
$tag = '';
|
|
}
|
|
$html.=<<<EOF
|
|
<div image_id="{$image_id}" style="text-align:center;vertical-align: middle;float:left;width:96px;height:96px;border:3px solid #ddd;margin:3px">
|
|
<img {$tag} src="{$url}" />
|
|
</div>
|
|
EOF;
|
|
}
|
|
|
|
$pager = $this->ui()->pager(array(
|
|
'current'=>2,
|
|
'total'=>200,
|
|
'link'=>'javascript:'.$this->var_name.'.page(%d)',
|
|
'nobutton'=>false,
|
|
));
|
|
echo $html.$pager;
|
|
}
|
|
|
|
function table(){
|
|
echo '
|
|
<div class="tableform" style=" background:none">
|
|
<table cellspacing="0" cellpadding="0" border="0">
|
|
|
|
<tr><th>'.app::get('desktop')->_('行数:').'</th>
|
|
|
|
<td> <input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows" /></td>
|
|
|
|
<th>'.app::get('desktop')->_('列数:').'</th>
|
|
|
|
<td> <input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns" /></td>
|
|
</tr>
|
|
|
|
|
|
<tr><th>'.app::get('desktop')->_('边框粗细:').'</th>
|
|
|
|
<td> <input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder" /></td>
|
|
|
|
<th>'.app::get('desktop')->_('对齐标题:').'</th>
|
|
|
|
<td><select id="selAlignment" name="selAlignment">
|
|
<option value="" selected="selected">'.app::get('desktop')->_('默认').'</option>
|
|
<option value="left">'.app::get('desktop')->_('左边').'</option>
|
|
<option value="center">'.app::get('desktop')->_('中间').'</option>
|
|
<option value="right">'.app::get('desktop')->_('右边').'</option>
|
|
</select></td>
|
|
</tr>
|
|
|
|
|
|
<tr><th>'.app::get('desktop')->_('表格宽度:').'</th>
|
|
<td><input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth" />
|
|
<select id="selWidthType" name="selWidthType">
|
|
|
|
<option value="px" selected="selected">'.app::get('desktop')->_('像素').'</option>
|
|
<option value="%">'.app::get('desktop')->_('百分比').'</option>
|
|
</select></td>
|
|
<th>'.app::get('desktop')->_('表格宽度:').'</th>
|
|
<td><input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" />'.app::get('desktop')->_('像素').'</td>
|
|
</tr>
|
|
|
|
|
|
|
|
<tr><th>'.app::get('desktop')->_('单元格边距').'</th>
|
|
|
|
<td> <input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing" /></td>
|
|
|
|
<th>'.app::get('desktop')->_('单元格间距').'</th>
|
|
|
|
<td> <input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding" /></td>
|
|
|
|
</tr></table>
|
|
<div class="mainFoot"><div class="table-action">
|
|
<button type="button" class="btn" id="mce_dlg_ok"><span><span>'.app::get('desktop')->_('确定').'</span></span></button>
|
|
<button type="button" class="btn" isclosedialogbtn="true"><span><span>'.app::get('desktop')->_('取消').'</span></span></button>
|
|
</div></div>
|
|
</div>
|
|
<script>
|
|
$("mce_dlg_ok").addEvent("click",function(){
|
|
var ret = "<table "+($("selAlignment").value?("align=\""+$("selAlignment").value+"\" "):"")+"width=\""+$("txtWidth").value+$("selWidthType").value+"\" "+($("txtHeight").value?("height=\""+$("txtHeight").value+"\" "):"")+"border=\""+$("txtBorder").value+"\" cellspacing=\""+$("txtCellSpacing").value+"\" cellpadding=\""+$("txtCellPadding").value+"\">";
|
|
var row="";
|
|
for(var i=$("txtColumns").value.toInt();i>0;i--){
|
|
row+="<td> </td>";
|
|
}
|
|
for(var i=$("txtRows").value.toInt();i>0;i--){
|
|
ret+="<tr>"+row+"</tr>";
|
|
}
|
|
ret+="</table>";
|
|
window.curEditor.exec.bind(window.curEditor)("insertHTML",ret);
|
|
});
|
|
</script>
|
|
';
|
|
}
|
|
|
|
|
|
function link(){
|
|
|
|
$html='
|
|
<div class="tableform" id="dlg_lnk_base">
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
<tr><th width="100">'.app::get('desktop')->_('文本:').'</th>
|
|
<td><input type="text" size="30" name="text" vtype="required" value="'.$_POST['text'].'" /> <span style="color:red;">*</span></td>
|
|
</tr>
|
|
<tr><th>'.app::get('desktop')->_('标题:').'</th>
|
|
<td><input type="text" size="30" name="title" value="'.$_POST['title'].'" /><br />'.app::get('desktop')->_('当鼠标移至链接上时,会显示链接标题。').'</td>
|
|
</tr>
|
|
<tr><th> </th>';
|
|
$html.='<td><input type="checkbox" name="_blank" value="true"';
|
|
$html.($_POST['target']=='_blank')?' checked="checked" ':' ';
|
|
$html.='id="lnkInNewWindow"><label for="lnkInNewWindow">'.app::get('desktop')->_('在新窗口中打开链接').'</label></td>';
|
|
$html.='
|
|
</tr>
|
|
<tr><th>'.app::get('desktop')->_('链接到:').'</th>
|
|
<td><input type="radio" name="type" value="url" id="lnkToUrl"';
|
|
$html.=(!$_POST[type] || $_POST[type]=='url')?' checked="checked" ':' ';
|
|
$html.='><label for="lnkToUrl">'.app::get('desktop')->_('链接').'</label><input type="radio" name="type" value="goods" id="lnkToGoods"';
|
|
$html.=($_POST[type]=='goods')?' checked="checked" ':' ';
|
|
$html.='<label for="lnkToGoods">'.app::get('desktop')->_('商品').'</label><input type="radio" name="type" value="page" id="lnkToPage"';
|
|
$html.=($_POST[type]=='page')?' checked="checked" ':' ';
|
|
$html.='><label for="lnkToPage">'.app::get('desktop')->_('页面').'</label><br /><input type="radio" name="type" value="article" id="lnkToArt"';
|
|
$html.=($_POST['type']=='article')?' checked="checked" ':' ';
|
|
$html.='><label for="lnkToArt">'.app::get('desktop')->_('文章').'</label><input type="radio" name="type" value="email" id="lnkToMail"';
|
|
$html.=($_POST[type]=='email')?' checked="checked" ':' ';
|
|
$html.='><label for="lnkToMail">'.app::get('desktop')->_('电子邮件').'</label></td>
|
|
</tr>
|
|
</table>
|
|
<div id="dolink">
|
|
<table id="dolnkToUrl"';
|
|
$html.=($_POST[type] && $_POST[type]!='url')?' style="display:none" ':'';
|
|
$html.='
|
|
|
|
<tr><th >'.app::get('desktop')->_('链接地址:').'</th>
|
|
|
|
<td><input type="text" size="30" name="url" value="';
|
|
$html.=(!$_POST[type] || $_POST[type]=='url')?$_POST[href]:' ';
|
|
$html.='" /></td>
|
|
</tr>
|
|
</table>
|
|
<table id="dolnkToGoods"
|
|
';
|
|
$html.=($_POST[type]!='goods')?' style="display:none" ':'';
|
|
$__a=app::get('desktop')->_('查找商品:');
|
|
$__b=app::get('desktop')->_('查找');
|
|
$html.=<<<EOF
|
|
<tr ><th>$__a</th>
|
|
<td><input type="text" size="20" id="iptGoodsFinder" /><button onclick="new Request.HTML({url:'index.php?ctl=editor&act=find&p[0]=goods&p[1]='+encodeURIComponent($('iptGoodsFinder').value),'method':'get','update':'iptGoodsList'}).send()">$__b</button><br /><div id="iptGoodsList">{$goodsInfo}</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table id="dolnkToPage"
|
|
EOF;
|
|
$html.=($_POST['type']!='page')?' style="display:none" ':'';
|
|
$html.='
|
|
<tr >
|
|
<th>'.app::get('desktop')->_('页面地址:').'</th>
|
|
<td><select name="page" style="width:200px">
|
|
';
|
|
|
|
$article_obj = app::get('content')->model("article_indexs");
|
|
$page_data = $article_obj->getList('*');
|
|
foreach($page_data as $page_key=>$page_val)
|
|
{
|
|
$aTmp['title'] = $page_val['title'];
|
|
$aTmp['url'] = app::get('site')->router()->gen_url(array('app'=>'content', 'ctl'=>'site_article', 'act'=>'index', 'arg0'=>$page_val['article_id']));
|
|
$linked['page'][]=$aTmp;
|
|
}
|
|
|
|
foreach((array)$linked['page'] as $page){
|
|
$html.='<option value="'.$page['url'].'"'.(($_POST['page']==$page['title'])?' selected="selected"':'').'>'.$page['title'].'</option>';
|
|
}
|
|
$html.='
|
|
</select></td>
|
|
</tr>
|
|
</table>
|
|
<table id="dolnkToArt"
|
|
';
|
|
$html.=($_POST['type']!='article')?' style="display:none" ':' ';
|
|
$__c=app::get('desktop')->_('查找文章:');
|
|
$html.=<<<EOF
|
|
><tr >
|
|
<th>$__c</th>
|
|
<td><input type="text" size="20" id="iptArtFinder" /><button onclick="new Request.HTML({url:'index.php?ctl=editor&act=find&p[0]=article&p[1]='+encodeURIComponent($('iptArtFinder').value),'method':'get','update':'iptArtList'}).send()">$__b</button><br />
|
|
<div id="iptArtList">{$articleInfo}</div></td>
|
|
</tr>
|
|
</table>
|
|
<table id="dolnkToMail"
|
|
EOF;
|
|
$html.=($_POST[type]!='email')?' style="display:none" ':'';
|
|
$html.='
|
|
<tr><th>'.app::get('desktop')->_('邮件地址:').'</th>
|
|
<td><input type="text" size="30" name="email" value="{$_POST[email]}" /></td>
|
|
</tr>
|
|
</table>
|
|
</div></div>
|
|
|
|
<div class="mainFoot">
|
|
<div class="table-action">
|
|
<button type="button" class="btn" id="mce_dlg_ok"><span><span>'.app::get('desktop')->_('确定').'</span></span></button>
|
|
<button type="button" class="btn" isclosedialogbtn="true"><span><span>'.app::get('desktop')->_('取消').'</span></span></button>
|
|
</div></div>
|
|
';
|
|
$html.="
|
|
<script>
|
|
\$('lnkToUrl').addEvent('click',function(){
|
|
\$ES('table','dolink').setStyle('display','none');
|
|
\$('dolnkToUrl').setStyle('display','');
|
|
});
|
|
\$('lnkToGoods').addEvent('click',function(){
|
|
\$ES('table','dolink').setStyle('display','none');
|
|
\$('dolnkToGoods').setStyle('display','');
|
|
});
|
|
\$('lnkToPage').addEvent('click',function(){
|
|
\$ES('table','dolink').setStyle('display','none');
|
|
\$('dolnkToPage').setStyle('display','');
|
|
});
|
|
\$('lnkToArt').addEvent('click',function(){
|
|
\$ES('table','dolink').setStyle('display','none');
|
|
\$('dolnkToArt').setStyle('display','');
|
|
});
|
|
\$('lnkToMail').addEvent('click',function(){
|
|
\$ES('table','dolink').setStyle('display','none');
|
|
\$('dolnkToMail').setStyle('display','');
|
|
});
|
|
|
|
|
|
\$('mce_dlg_ok').addEvent('click',function(){
|
|
var setting = \$('dlg_lnk_base').getValues();
|
|
var addon=[' ','type=\"'+setting.type+'\"',' '];
|
|
switch(setting.type){
|
|
case 'goods':
|
|
setting.url = setting.goods;
|
|
break;
|
|
|
|
case 'page':
|
|
setting.url = setting.page;
|
|
break;
|
|
|
|
case 'article':
|
|
setting.url = setting.article;
|
|
break;
|
|
|
|
case 'email':
|
|
setting.url = 'mailto:'+setting.email;
|
|
break;
|
|
|
|
}
|
|
setting.url=decodeURI(setting.url);
|
|
if(setting.title){
|
|
addon.push('title=\"'+setting.title+'\"');
|
|
}
|
|
if(setting._blank){
|
|
addon.push('target=\"_blank\"');
|
|
}
|
|
var link_uid='link'+(Native.UID++);
|
|
|
|
var linkHtml = new String('<a href=\"{1}\" thref=\"{1}\" {2} id=\"'+link_uid+'\">{0}</a>').format(setting.text,setting.url,addon.join(''));
|
|
try{
|
|
window.curEditor.exec.bind(window.curEditor)('insertHTML',linkHtml);
|
|
}catch(e){}
|
|
|
|
var alink=window.curEditor.inc.win.document.getElementById(link_uid);
|
|
|
|
if(alink){
|
|
alink.href=alink.getAttribute('thref');
|
|
alink.removeAttribute('thref');
|
|
alink.removeAttribute('id');
|
|
}
|
|
});
|
|
|
|
</script>
|
|
|
|
";
|
|
echo $html;
|
|
|
|
}
|
|
|
|
|
|
function image(){
|
|
$__d=app::get('desktop')->_('选择上传图片的方式');
|
|
$__e=app::get('desktop')->_('上传图片');
|
|
$__f=app::get('desktop')->_('网络图片地址');
|
|
$__g=app::get('desktop')->_('使用图库');
|
|
$__h=app::get('desktop')->_('从您的电脑中挑选一张图片:');
|
|
$__j=app::get('desktop')->_('为图片设置标签');
|
|
$__k=app::get('desktop')->_('请输入标签名称:');
|
|
$__l=app::get('desktop')->_('请选择标签名称:');
|
|
$__z=app::get('desktop')->_('建议为图片设置标签,以方便管理图库');
|
|
$__x=app::get('desktop')->_('输入一张网络图片的网址:');
|
|
$__v=app::get('desktop')->_('复制网络上的一张图片路径到上面的输入框');
|
|
$__n=app::get('desktop')->_('例如:"http://www.example.com/images/pic.jpg"');
|
|
$__m=app::get('desktop')->_('从网店图库中挑选一张图片:');
|
|
$__q=app::get('desktop')->_('按标签过滤:');
|
|
$__W=app::get('desktop')->_('显示所有');
|
|
$__r=app::get('desktop')->_('请点击选择要使用的图片');
|
|
$__t=app::get('desktop')->_('读取图片库,请稍侯...');
|
|
$__y=app::get('desktop')->_('设置图片属性');
|
|
$__u=app::get('desktop')->_('位置:');
|
|
$__i=app::get('desktop')->_('默认');
|
|
$__o=app::get('desktop')->_('上对齐');
|
|
$__P=app::get('desktop')->_('底对齐');
|
|
$__aa=app::get('desktop')->_('文字环绕');
|
|
$__ab=app::get('desktop')->_('左对齐');
|
|
$__ac=app::get('desktop')->_('右对齐');
|
|
$__ad=app::get('desktop')->_('缩放:');
|
|
$__af=app::get('desktop')->_('最宽:');
|
|
$__ag=app::get('desktop')->_('最高:');
|
|
$__ah=app::get('desktop')->_('(等比例缩放图片的设置.)');
|
|
$__aj=app::get('desktop')->_('连接:');
|
|
$__ak=app::get('desktop')->_('点击图片链接到原图.');
|
|
$__al=app::get('desktop')->_('点击图片链接到指定地址:');
|
|
$__aq=app::get('desktop')->_('确定');
|
|
$__aw=app::get('desktop')->_('取消');
|
|
$___b=app::get('desktop')->_('正在上传...');
|
|
$___b1=app::get('desktop')->_('图片上传失败!');
|
|
$___b2=app::get('desktop')->_('正在校验这张图片...');
|
|
$___b3=app::get('desktop')->_('图片来源不正确!');
|
|
$___b4=app::get('desktop')->_('没有要使用的图片源.');
|
|
|
|
$html=<<<EOF
|
|
<div class="tableform mainHead">
|
|
<h4>$__d</h4>
|
|
<div id="imgFrom">
|
|
<input type="radio" name="from" id="imgFromLocal" checked><label for="imgFromLocal">$__e</label>
|
|
<input type="radio" name="from" id="imgFromNet"><label for="imgFromNet">$__f</label>
|
|
<input type="radio" name="from" id="imgFromLib"><label for="imgFromLib">$__g</label>
|
|
</div>
|
|
</div>
|
|
<iframe id="img-uploader" style="display:none;width:100%" src='about.html' name="img-uploader"></iframe>
|
|
<form id="imgFromSomeWhere" target="img-uploader" action="index.php?ctl=editor&act=uploader" method="post" enctype="multipart/form-data">
|
|
<div id="imgViewLocal" class="tableform"><h4>$__h</h4>
|
|
<input name="file" type="file" />
|
|
<span onclick="$(this).getNext().toggleDisplay()" class="sysiconBtn addorder">$__j</span>
|
|
<div class="division" style='display:none'>
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
<tr><th>$__k</th>
|
|
<td><input type="text" id="tagTextarea" name="tags"/></td>
|
|
</tr>
|
|
<tr><th>$__l</th>
|
|
<td><div id="tagLibs" class="tagEditor" style='height:50px'>
|
|
|
|
</div></td>
|
|
</tr>
|
|
</table></div>
|
|
<div class='upload_view note' >$__z.</div>
|
|
</div>
|
|
</form>
|
|
|
|
<div style='display:none' id="imgViewNet" class="tableform">
|
|
<h4>$__x</h4>
|
|
<input type="text" style="width:80%" id="imgViewUrl" value="http://" />
|
|
<div id="imgViewUrlPreivew" class="note">$__v<br/>.$__n</div>
|
|
</div>
|
|
<div style="display:none" id="imgViewLib" class="tableform">
|
|
<h4>$__m</h4>
|
|
<div class="division">
|
|
<span>$__q</span>
|
|
<select style="width:200px;" onchange="showResLib(encodeURIComponent(this.value),0)">
|
|
<option value="0">$__W</option>
|
|
|
|
</select>
|
|
</div>
|
|
<h4>$__r</h4>
|
|
<div class="division" id="imgViewLibBox">$__t</div>
|
|
</div>
|
|
<div class="tableform">
|
|
<div style="clear:both;{if !$show_picset}display:none;{/if}" id='imgOptionsHide'>
|
|
<FIELDSET >
|
|
<LEGEND>$__y</LEGEND>
|
|
<strong>$__u</strong>
|
|
<select name='align'>
|
|
<option value=''>$__i</option>
|
|
<option value='top'>$__o</option>
|
|
<option value='bottom'>$__p</option>
|
|
<option value='middle'>$__aa</option>
|
|
<option value='left'>$__ab</option>
|
|
<option value='right'>$__ac</option>
|
|
</select><br/><br/>
|
|
<strong>$__ad</strong>$__af<input name='width' value='' style='width:40px'/> $__ag<input name='height' value='' style='width:40px'/><em>$__ah</em><br/><br/>
|
|
<strong>$__aj</strong>
|
|
<input name='linkimg' type='radio' />$__ak
|
|
<input name='linkimg' type='radio' class='mdf'/>$__al<input type='text' value='http://' name='linkimgurl' class='inputstyle' onfocus='$(this).getPrevious("input").checked=true'/>
|
|
</FIELDSET>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mainFoot"><div class="table-action">
|
|
<button type="button" class="btn" id="mce_dlg_ok"><span><span>$__aq</span></span></button>
|
|
<button type="button" class="btn" isclosedialogbtn="true"><span><span>$__aw</span></span></button>
|
|
</div></div>
|
|
EOF;
|
|
$html.=<<<EOF
|
|
<script>
|
|
(function(){
|
|
var imgFormDialog=$('imgFrom').getParent('.dialog');
|
|
var submitcallback=imgFormDialog.retrieve('callback');
|
|
var imgSERI,linkIMG;
|
|
var insertImage=function(v,i){
|
|
var i=i||v;
|
|
if(submitcallback)return submitcallback(v,imageHtml(v,i),i);
|
|
window.curEditor.exec.call(window.curEditor,'insertHTML',imageHtml(v,i));
|
|
var img=window.curEditor.inc.win.$(imgSERI);
|
|
img.src=img.get('turl');
|
|
img.removeProperties('turl','id');
|
|
if(linkIMG){
|
|
var a=window.curEditor.inc.win.$(imgSERI+"lnk");
|
|
a.href=a.get('turl');
|
|
a.removeProperties('turl','id');
|
|
}
|
|
}
|
|
var imageHtml=function(url,storager){
|
|
var img=new Element('img',{src:url});
|
|
var h=\$E('input[name=height]','imgOptionsHide').value.toInt(),
|
|
w=\$E('input[name=width]','imgOptionsHide').value.toInt(),
|
|
align=\$E('select','imgOptionsHide').getValue();
|
|
linkIMG=$$('#imgOptionsHide input[name=linkimg]').filter(function(ipt){return !!ipt.checked})[0];
|
|
if(h||w){
|
|
img.zoomImg(w,h);
|
|
}
|
|
if(align&&align.trim()!==""){img.set('align',align)}
|
|
if(SHOPBASE&&url.contains(SHOPBASE)){
|
|
url=url.replace(SHOPBASE,'');
|
|
}
|
|
img.set('src',url);
|
|
var d;
|
|
if(!submitcallback){
|
|
img.set('id',imgSERI='img'+Native.UID++).set('turl',url);
|
|
}
|
|
if(linkIMG){
|
|
var imglink = linkIMG.hasClass('mdf')?linkIMG.getNext('input').value.trim():url;
|
|
var a=new Element('a',{
|
|
href:imglink,
|
|
target:'_blank'
|
|
});
|
|
if(window.gecko&&!submitcallback){a.set('id',imgSERI+"lnk").set('turl',imglink);}
|
|
d=new Element('div').adopt(a.adopt(img));
|
|
}else{
|
|
d=new Element('div').adopt(img);
|
|
}
|
|
return d.get('html');
|
|
}
|
|
var imgInject=function(Imageurl){
|
|
return window.curEditor.exec.bind(window.curEditor)('insertimage',Imageurl);
|
|
}
|
|
$('imgFromLocal').addEvent('click',function(){
|
|
$('imgViewLocal').setStyle('display','');
|
|
$('imgViewNet').setStyle('display','none');
|
|
$('imgViewLib').setStyle('display','none');
|
|
});
|
|
$('imgFromNet').addEvent('click',function(){
|
|
$('imgViewNet').setStyle('display','');
|
|
$('imgViewLocal').setStyle('display','none');
|
|
$('imgViewLib').setStyle('display','none');
|
|
});
|
|
$('imgFromLib').addEvent('click',function(){
|
|
if(!this.initLib){
|
|
this.initLib=true;
|
|
showResLib();
|
|
}
|
|
$('imgViewNet').setStyle('display','none');
|
|
$('imgViewLocal').setStyle('display','none');
|
|
$('imgViewLib').setStyle('display','');
|
|
});
|
|
var upForm=$('imgFromSomeWhere');
|
|
var upView=\$E('.upload_view',upForm);
|
|
upForm.addEvent('submit',function(){
|
|
upView.setHTML('<font color="red">$___b</font>');
|
|
});
|
|
window.uploadCallback = function(value){
|
|
if(!value)return upView.empty();
|
|
if(!value.url)return upView.empty().setHTML("<div class='notice'>"+value+"</div>");
|
|
new Asset.image(value.url,{onload:function(){
|
|
insertImage(value.url,value.ident);
|
|
},onerror:function(){
|
|
upView.setText($___b1)
|
|
}});
|
|
};
|
|
$('imgViewUrl').addEvent('change',function(){
|
|
var ivup=$('imgViewUrlPreivew');
|
|
var imgsrc=$('imgViewUrl').value;
|
|
ivup.setText($___b2);
|
|
new Asset.image(imgsrc,{onload:function(img){
|
|
if(ivup)
|
|
ivup.empty().adopt(img.zoomImg(200,200));
|
|
},onerror:function(){
|
|
ivup.setText($___b3);
|
|
}});
|
|
});
|
|
|
|
$('mce_dlg_ok').addEvent('click',function(e){
|
|
e.stop();
|
|
if($('imgFromLocal').checked){
|
|
$('imgFromSomeWhere').submit();
|
|
}else if($('imgFromNet').checked){
|
|
if(img=$('imgViewUrlPreivew').getElement('img')){
|
|
insertImage(img.src,img.get('ident'));
|
|
}
|
|
}else{
|
|
if(!\$E('.image-item-selected','imgViewLibBox'))return alert($___b4);
|
|
var img=\$E('.image-item-selected','imgViewLibBox').getElement('img');
|
|
if(!img)return alert(a$___b4);
|
|
insertImage(img.src,img.get('ident'));
|
|
}
|
|
});
|
|
})();
|
|
function showResLib(tag_id,page_id){
|
|
tag_id = tag_id?tag_id:0;
|
|
page_id = page_id?page_id:1;
|
|
W.page('index.php?ctl=editor&act=gallery&p[0]={0}&p[1]={1}'.format(tag_id,page_id),{method:'get',update:$('imgViewLibBox')});
|
|
}
|
|
</script>
|
|
EOF;
|
|
echo $html;
|
|
}
|
|
|
|
|
|
function find($type,$keywords){
|
|
if(!$keywords){
|
|
echo app::get('desktop')->_('请输入关键字。');
|
|
return;
|
|
}
|
|
if($type=='goods'){
|
|
$mod = app::get('b2c')->model('goods');
|
|
foreach($mod->getList('goods_id,name',array('name'=>$keywords)) as $k=>$r){
|
|
$list[] = array(
|
|
'url'=>app::get('site')->router()->gen_url(array('app'=>'b2c','ctl'=>'site_product','full'=>1,'act'=>'index','arg'=>$r['goods_id']))
|
|
,'label'=>$r['name']);
|
|
}
|
|
$this->pagedata['list'] = $list;
|
|
}elseif($type=='article'){
|
|
$mod = app::get('content')->model('article_indexs');
|
|
foreach($mod->getList('article_id,title',array('title'=>$keywords)) as $k=>$r){
|
|
var_dump($r);
|
|
$list[] = array(
|
|
'url'=>app::get('site')->router()->gen_url(array('app'=>'content','ctl'=>'site_article','full'=>1,'act'=>'index','arg'=>$r['article_id'] ) ),
|
|
'label'=>$r['title']);
|
|
}
|
|
$this->pagedata['list'] = $list;
|
|
}
|
|
if(count($list)>0){
|
|
$this->pagedata['type'] = $type;
|
|
$this->display('editor/dlg_result.html');
|
|
}else{
|
|
echo app::get('desktop')->_('没有符合条件"')."<b>".$keywords."<b>".app::get('desktop')->_('"的记录。');
|
|
}
|
|
}
|
|
|
|
function lista(){
|
|
$_filter = unserialize($_GET['filter']);
|
|
foreach($_POST as $k=>$v){
|
|
if( ( $k[0]!='_' && $v ) || $v === false ){
|
|
if($_POST['_'.$k.'_search']){
|
|
$filter['_'.$k.'_search']=$_POST['_'.$k.'_search'];
|
|
}
|
|
$filter[$k]=$v;
|
|
}
|
|
}
|
|
$filter = array_merge((array)$filter,(array)$_filter);
|
|
$this->_select_obj($filter);
|
|
$this->display('editor/object_items.html');
|
|
}
|
|
function object_rows(){
|
|
if($_POST['data']){
|
|
if($_POST['app_id'])
|
|
$app = app::get($_POST['app_id']);
|
|
else
|
|
$app = $this->app;
|
|
$obj = $app->model($_POST['object']);
|
|
$schema = $obj->get_schema();
|
|
$textColumn = $_POST['textcol']?$_POST['textcol']:$schema['textColumn'];
|
|
$textColumn = explode(',',$textColumn);
|
|
$_textcol = $textColumn;
|
|
$textColumn = $textColumn[0];
|
|
|
|
$keycol = $_POST['key']?$_POST['key']:$schema['idColumn'];
|
|
|
|
|
|
//统一做掉了。
|
|
if( $_POST['data'][0]==='_ALL_' ) {
|
|
$filter = !empty($obj->__all_filter) ? $obj->__all_filter : array();
|
|
if(!empty($_POST['filter']['advance'])) {
|
|
$filter = array();
|
|
$filterStrArr = explode(',', $_POST['filter']['advance']);
|
|
foreach ($filterStrArr as $fsa) {
|
|
$tmpArr = explode('=', $fsa);
|
|
$filter[$tmpArr[0]] = $tmpArr[1];
|
|
}
|
|
}
|
|
$arr_list = $obj->getList( $keycol,$filter );
|
|
$_POST['data'] = array_map('current',$arr_list);
|
|
}
|
|
$items = $obj->getList($keycol . ',' . implode(',', $_textcol), array($keycol=>$_POST['data']));
|
|
$name = $items[0][$textColumn];
|
|
if($_POST['type']=='radio'){
|
|
if(strpos($textColumn,'@')!==false){
|
|
list($field,$table,$app_) = explode('@',$textColumn);
|
|
if($app_){
|
|
$app = app::get($app_);
|
|
}
|
|
$mdl = $app->model($table);
|
|
$schema = $mdl->get_schema();
|
|
$row = $mdl->getList('*',array($schema['idColumn']=>$items[0][$keycol]));
|
|
$name = $row[0][$field];
|
|
|
|
}
|
|
echo json_encode(array('id'=>$items[0][$keycol],'name'=>$name));
|
|
exit;
|
|
}
|
|
|
|
$this->pagedata['_input'] = array('items'=>$items,
|
|
'idcol' => $schema['idColumn'],
|
|
'keycol' => $keycol,
|
|
'textcol' => $textColumn,
|
|
'_textcol' => $_textcol,
|
|
'name'=>$_POST['name']
|
|
);
|
|
$this->pagedata['_input']['view_app'] = 'desktop';
|
|
$this->pagedata['_input']['view'] = $_POST['view'];
|
|
if($_POST['view_app']){
|
|
$this->pagedata['_input']['view_app'] = $_POST['view_app'];
|
|
}
|
|
|
|
if(strpos($_POST['view'],':')!==false){
|
|
list($view_app,$view) = explode(':',$_POST['view']);
|
|
$this->pagedata['_input']['view_app'] = $view_app;
|
|
$this->pagedata['_input']['view'] = $view;
|
|
|
|
}
|
|
|
|
$this->display('finder/input-row.html');
|
|
}
|
|
}
|
|
function finder_common(){
|
|
$params = array(
|
|
'title'=>app::get('desktop')->_('列表'),
|
|
'use_buildin_new_dialog' => false,
|
|
'use_buildin_set_tag'=>false,
|
|
'use_buildin_recycle'=>false,
|
|
'use_buildin_export'=>false,
|
|
'use_buildin_import'=>false,
|
|
'use_buildin_filter'=>true,
|
|
'use_buildin_setcol'=>true,
|
|
'use_buildin_refresh'=>true,
|
|
'finder_aliasname'=>'finder_common',
|
|
'alertpage_finder'=>true,
|
|
'use_buildin_tagedit'=>false,
|
|
);
|
|
if(substr($_GET['name'],0,7) == 'adjunct') $params['orderBy'] = 'goods_id desc';
|
|
$this->finder($_GET['app_id'].'_mdl_'.$_GET['object'],$params);
|
|
}
|
|
function selectobj(){
|
|
$filter = $_GET['filter'];
|
|
$_GET['_finder']['finder_id'] = $_GET['obj_id'] = substr(md5($_GET['object']),0,6);
|
|
$this->_select_obj($filter);
|
|
if($this->pagedata['data']){
|
|
$this->pagedata['filter'] = true;
|
|
}
|
|
$render = kernel::single('desktop_finder_builder_filter_render');
|
|
ob_start();
|
|
$filterbody = $render->main($_GET['object'],app::get($_GET['app_id']));
|
|
$filterbody = ob_get_clean();
|
|
$this->pagedata['filterbody'] = $filterbody;
|
|
$this->display('editor/object_selector.html');
|
|
}
|
|
function _select_obj($filter){
|
|
if(strpos($_GET['object'],'@')!==false){
|
|
$tmp = explode('@',$_GET['object']);
|
|
$app = app::get($tmp[1]);
|
|
$object = $tmp[0];
|
|
}else{
|
|
$object = $_GET['object'];
|
|
$app = app::get($_GET['app_id']);
|
|
}
|
|
|
|
if($_GET['cols']){
|
|
list($textColumn) = explode(',',$_GET['cols']);
|
|
$select_cols = ','.$_GET['cols'];
|
|
}
|
|
|
|
$o = $app->model($object);
|
|
$limit = 10;
|
|
if(!$_GET['page']){
|
|
$_GET['page'] = 1;
|
|
}
|
|
$start = ($_GET['page']-1) * $limit;
|
|
$this->dbschema = $o->get_schema();
|
|
$this->pagedata['data'] = $this->dbschema['columns'];
|
|
if($_COOKIE['LOCALGOODS']){
|
|
$this->pagedata['items'] = $o->getBindList($start,$limit,$count,$filter);
|
|
}else{
|
|
$this->pagedata['items'] = $o->getList($this->dbschema['idColumn'].','.$this->dbschema['textColumn'].$select_cols,$filter,$start,$limit);
|
|
$count = $o->count($filter);
|
|
}
|
|
$this->pagedata['textColumn'] = $textColumn?$textColumn:$this->dbschema['textColumn'];
|
|
$this->pagedata['idColumn'] = $this->dbschema['idColumn'];
|
|
$this->pagedata['ipt_type'] = $_GET['select']=='checkbox'?'checkbox':'radio';
|
|
|
|
$this->pagedata['pager'] = array(
|
|
'current'=> $_GET['page'],
|
|
'total'=> ceil($count/$limit),
|
|
|
|
|
|
|
|
'link'=> 'javascript:update_'.$_GET['obj_id'].'(_PPP_)',
|
|
'token'=> '_PPP_'
|
|
);
|
|
|
|
$this->_filter();
|
|
}
|
|
function _filter(){
|
|
if(strpos($_GET['object'],'@')!==false){
|
|
$tmp = explode('@',$_GET['object']);
|
|
$app = app::get($tmp[1]);
|
|
$object = $tmp[0];
|
|
}else{
|
|
$object = $_GET['object'];
|
|
$app = app::get($_GET['app_id']);
|
|
}
|
|
$obj = $app->model($object);
|
|
$from = 'from';
|
|
$this->dbschema = $obj->get_schema();
|
|
$data = $this->dbschema['columns'];
|
|
$filter_items = array();
|
|
include(APP_DIR."/base/datatypes.php");
|
|
foreach($data as $k=>$v){
|
|
if($v['filtertype']){
|
|
$data[$k]['searchparams'] = $datatypes[$v['filtertype']]['searchparams'];
|
|
if($v['filtertype']=='normal'){
|
|
$data[$k]['searchparams'] = $datatypes['email']['searchparams'];
|
|
}
|
|
if(is_array($v['type'])){
|
|
$data[$k]['options'] = $v['type'];
|
|
$data[$k]['type'] = 'select';
|
|
}
|
|
if($v['filtertype']=='custom'){
|
|
$data[$k]['searchparams'] = $v['filtercustom'];
|
|
}
|
|
$filter_items[$k] = $data[$k];
|
|
}
|
|
|
|
}
|
|
$this->pagedata['data'] = $filter_items;
|
|
}
|
|
|
|
}
|