5

我正在使用CKEditor,并且我已经成功实现了通常的自定义图像浏览器,它指向我的php脚本。但是,这会在一个丑陋的弹出窗口中打开。我想通过ajax将其打开成我的页面上的某个div,以便滑出并匹配我的cms的其余部分。CKEditor自定义图像浏览器

我看到两种方法可以做到这一点;

1)CKEditor的自定义插件按钮,不知怎的,打开我的对话框,并传回以同样的方式为弹出确实

2)通过其他方式打开我的对话框,然后通过图像细节的CKEditor ,通过点击一个图像或者在编辑器中拖动它!

如果有人这样做,请让我知道。

+0

刚刚意识到从任何浏览器窗口中拖动图像编辑器做的伎俩..但是,这并不让我消毒标签,所以我的CMS知道它的一个LO校准图像。 – DrKHunter 2011-03-10 11:34:27

回答

1

,当你从任何浏览器窗口中拖动图像的编辑器,以便您的CMS知道这是一个本地图像消毒的图像标签:

我实现了这将检查所有的图像标签的解决方案,如果它不是一个本地图像,它通过ajax请求和PHP将图像复制到您的服务器,让我向您推荐这个选项:

首先,您不应该立即从编辑器发布内容,而是附加它到不同的隐藏div,所以你可以用javascript来分析它,让我们给这个div“descriptionDropPlace”的ID

然后,该代码会检查每个图像的URL,如果不符合您的本地域名(这里MYDOMAIN),它将使一个Ajax请求:

var images = $('descriptionDropPlaceimg'); 
$("descriptionDropPlace img").each(function(index){ 
    var ajaxDone = false; 
    var src = $(this).attr("src"); 

     var domain = src.match(/^http:\/\/[^/]+/)[0]; 
     if(!domain.match("mydomain")){ 
      $.post('http://'+window.location.hostname+'/phpGetImage.php', { url: src }).done(function(result){ 
       $(images[index]).attr('src', result); 
       var ajaxDone = true; 
      }); 
     } 
}); 

所以phpGetImage.php看起来像这样(有一些代码可以检测是否有GET变量,并删除它们自己,并检测是否有两个同名图像但具有不同目录的图像,并将它们保存为它们所在的整个字符转义URL的名称在):

$url = $_POST["url"]; 
    $headers = get_headers($url, 1); 
    if(!empty($headers['Location'])){ 
     $url = $headers['Location']; 
    } 
    $url = explode("?", $url); 
    $url = $url[0]; 
    $replace = array("/", "."); 
    $image = str_replace("http:--", "",str_replace($replace, "-", $url)); 
    $path = './uploads/yourImageDirectory/'.$image; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    file_put_contents($path, $data); 

    echo base_url().'uploads/yourImageDirectory/'.$image;