2012-08-07 87 views
1

我需要根據各種場景設置圖像管理器的路徑和根路徑。將自定義參數發送到TinyMCE編輯器中的圖像管理器

同一用戶可以使用圖像管理器從不同頁面上傳圖像。我想從客戶端發送一個參數來表示場景。例如,如果用戶在主頁中使用編輯器,則發送回家;同樣,如果使用聯繫我們頁面發送聯繫人。我所能做的就是在init中設置客戶端的根路徑。例如,imagemanager_rootpath:「test」。但是我的路徑是根據我發送的參數在服務器端進行計算的。有沒有辦法做到這一點。

回答

0

從我理解你的問題,你有兩個選擇:

1:從服務器上的模板生成JavaScript(說使用Smarty的或同等學歷),並插入正確的根路徑到TinyMCE的初始化代碼。

所以,在直PHP,你可能最終得到這樣的:

<?php 
$root_path = get_root_path(); 
?> 

// Other javascript goes here 

tinymceInstance = tinyMce.init({ 
    //parameters 
    imagemanager_rootpath: "<?php echo $root_path ?>" 
}); 

2:生成一個包含所有你想要的Javascript有參數的JavaScript參數文件,然後初始化時使用此tinyMCE實例。

參數文件:

<?php 
echo "window.serverParameters = ".json_encode(array("imageRoot" => get_root_path())); 
?> 

HTML:

<html> 
    <head> 
     <script src="serverParameters.php" type="text/javascript" /> 
    </head> 
</html> 

的Javascript:

tinymceInstance = tinyMce.init({ 
    //parameters 
    imagemanager_rootpath: window.serverParameters.imageRoot 
}); 

希望幫助!

+0

我確實嘗試了兩個選項。我不得不重複很多代碼。這幾乎類似於做Session [「imagemanager.filesystem.rootpath」] =「」;在我使用編輯器的每個頁面上。有時候,頁面在同一頁面上有多個編輯器,他們需要上傳到不同的位置。如果我可以在tinyMce.init()中設置自定義參數並在服務器端接收它,那將會很好。目前我正在使用第二個選項,但不是使用js參數,而是在會話中設置根路徑。 – 2012-08-09 13:36:37

0

目前,我找不到一個更好的方法來做到這一點。我最終創建了一個幫助器方法,它接受一個指示資源類型的參數並確定根路徑並設置Session [「imagemanager.filesystem.rootpath」] =「someRootPath」。在用編輯器返回視圖的控制器中,我調用了這個輔助方法。這有幾個缺點。其中之一是,無論您使用圖像管理器,輔助方法都會被稱爲upfront。我最初的做法是在點擊圖片管理器後設置路徑。因此,如果視圖中的編輯器不使用圖像管理器,則不要調用幫助器方法。這樣做的第二個缺點是,如果您有多個編輯人員在相同的視圖上,但他們需要上傳到不同的位置;這不可能。所有編輯器在會話中使用相同的根路徑集。同樣,更好的方法是將每個編輯器的值發送到服務器並設置根路徑。使用多個位置的一種方法是使用magemanager_rootpath:「someRootPath」獲取所有位置並將它們設置在tinyMce編輯器的init()中。 然而,這樣做的一個好處是,如果你的視圖使用多個編輯器,並且它們都在該視圖中使用相同的位置,那麼輔助方法只會被調用一次,而不是多次使用原始方法。 因此,我將Skurrier的回答標爲正確,但如果您找到更好的方法,請發表評論。