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;