2013-08-02 22 views
2

我正在構建一個自定義的Joomla 3.0管理員組件,並且它的一部分需要一些Ajax調用來插入各種類型的字段。Joomla通過ajax插入媒體表單元素

雖然我一直無法插入媒體字段。

對於我剛剛創建html的常規輸入。 對於我用下面的代碼編輯器(我剛剛粘貼的提取物):

$editor = JFactory::getEditor(); 
$html .= $editor->display($name, $value, '100%', '250px', 20, 20, true, $id); 
echo $html; 

我寧願不重新對媒體領域的HTML代碼HTML存在相當數量和JavaScript可能會在未來的Joomla版本中發生變化。有沒有類似於JFactory的方法:我可以使用getEditor()?

我也試過創建媒體類的一個實例,但它需要一個表單對象,我不認爲可以訪問(或至少我不知道如何獲取它)在做Ajax調用時。

$xml = '<field 
    name="test" 
    type="media"       
/>'; 
$field = new SimpleXMLElement($xml); 

$media = new JFormFieldMedia(); 
$media->setup($field,''); 

echo $media->input; 
+0

在我看來,最大的問題是媒體領域通過'JFactory :: getDocument() - > addScriptDeclaration'和'modal'行爲向文檔添加腳本聲明。這使得異步加載相當有問題。爲什麼不加載媒體字段並將其隱藏至需要?或者你是否需要按需加載其中幾個,並且在頁面生成時不知道所需字段的數量? – MasterAM

+0

不幸的是,這是一個不知道所需字段數量的情況。基本上我有自定義字段,可以創建並應用到主模型,這些字段只在用戶指定要加載哪個「組」的自定義字段時加載,因此我無法確定有多少個字段。我的後備將是在我自己的圖像領域創建html,但這意味着它不會被更新版本的joomla自動更新。 – hyarion

回答

0

我設法弄清楚如何添加媒體元素。它不完全一樣的輸入選擇,所以我建立我自己的,用於調用圖像選擇我能夠通過JavaScript使用此函數調用它來做到這一點:

SqueezeBox.open('index.php?option=com_media&view=images&tmpl=component&asset=com_mycomponent&author=&fieldid=gallery_result' + field_id + '&folder=gallery', 
      { 
       size: 
         { 
          x: 800, 
          y: 500 
         }, 
       handler: 'iframe' 
      } 
    ) 

還沒完全是我一直在尋找,但足夠近。

1

K2有一個擴展名,叫做JW ALL VIDEOS。它是免費的,我建議你下載並看看它是如何正在做那裏的研究目的:

http://www.joomlaworks.net/extensions/free-premium/allvideos

+0

感謝您的建議,我已經通過了擴展,但它似乎並沒有做我正在嘗試。它是一個內容插件,而不是一個組件,它沒有任何Ajax調用來將媒體元素拖放到表單中。 – hyarion