2013-08-02 18 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