我正在开发J组件! 2.5并希望在后端添加浏览按钮,以便用户可以选择他们以前上传的文件。我将如何去做这件事?Joomla自定义组件添加浏览按钮
2
A
回答
1
这就是我想到的,如果有人能够使它更加健壮和可重用,那会很好。我可能以后自己做,但现在我有一个不可能的期限。
loadDir.php:
<?php
if(isset($_GET['dir'])) {
//Get array of valid extensions
if(isset($_GET['ext'])) {
if($_GET['ext'] == 'pdf') $validext = array("pdf");
else $validext = array("jpg", "jpeg", "png", "gif");
} else {
$validext = array("pdf", "jpg", "jpeg", "png", "gif");
}
$root = dirname(dirname(dirname(getcwd()))) . "/";
$directory = $root . $_GET['dir'];
$files = scandir($directory);
$thumb_count = 1;
//make sure we haven't gone too high (should never be called)
if(strpos($directory, 'images') == false) $directory = $root . "images";
//TODO: sort array with dirs in front
foreach($files as $file) {
if ($file == '.') continue; //Remove current directory from loop
//If in the images folder, don't let them go higher
if ($file == '..' & $_GET['dir'] == 'images') continue;
$path = $_GET['dir'];
if($file == '..') {
$path = dirname($path);
} else {
$path .= "/".$file;
}
if(is_dir($directory."/".$file)) {
echo "<a href=\"#\" onClick=\"loadDir('".$_GET['div']."', '".$path."', '".$_GET['ext']."'); return false;\">[DIR]".$file."</a>".PHP_EOL;
} else {
//Check to see it's a valid extension
$ext = pathinfo($file, PATHINFO_EXTENSION);
$num = rand(0,100);
if(in_array($ext, $validext)) echo "<a href=\"#\" id=\"".$num."\" onClick=\"select(".$num.", '".$path."'); return false;\">[FILE]".$file."</a>".PHP_EOL;
}
if(($thumb_count % 5) == 0) echo "<br/>";
$thumb_count++;
}
} else {
echo "Error loading: Directory not available";
}
?>
管理员/组件/ com_XXX /视图/ XXX/TMPL/form.php的:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
selected_file = "";
function select(id, file) {
$('#' + id).css('background-color', 'red');
selected_file = file;
}
function loadDir(div, path, ext) {
$('#'+div+'Window').load('<?php echo JURI::root();?>administrator/components/com_lot/loadDir.php?div='+div+'&ext='+ext+'&dir='+path);
}
$(document).ready(function() {
$('#floorOpen').on("click", function(){
loadDir('floor', 'images', 'pdf');
$('#floorDialog').show();
});
$('#floorClose').on("click", function(){
$('#floorDialog').hide();
if(selected_file != "") $('#floor_plan').val(selected_file);
selected_file = "";
});
$('#floorCancel').on("click", function(){
$('#floorDialog').hide();
selected_file = "";
});
$('#mainOpen').on("click", function(){
loadDir('main', 'images', 'img');
$('#mainDialog').show();
});
$('#mainClose').on("click", function(){
$('#mainDialog').hide();
if(selected_file != "") $('#main_image').val(selected_file);
selected_file = "";
});
$('#mainCancel').on("click", function(){
$('#mainDialog').hide();
selected_file = "";
});
});
</script>
......
<div id="floorDialog" style="position:absolute;display:none;width:400px;height:300px;border:1px solid #c0c0c0;background-color:#f0f0f0;top:800px;left:400px;">
<div id="floorWindow" style="position:relative;width: 390px;height: 250px;margin: 4px;border: 1px solid #c0c0c0;">
</div>
<a href="#" onClick="return false;" id="floorCancel">Cancel</a><a href="#" onClick="return false;" id="floorClose">OK</a>
</div>
<div id="mainDialog" style="position:absolute;display:none;width:400px;height:300px;border:1px solid #c0c0c0;background-color:#f0f0f0;top:800px;left:400px;">
<div id="mainWindow" style="position:relative;width: 390px;height: 250px;margin: 4px;border: 1px solid #c0c0c0;">
</div>
<a href="#" onClick="return false;" id="mainCancel">Cancel</a><a href="#" onClick="return false;" id="mainClose">OK</a>
</div>
....
<tr>
<td width="100" align="right" class="key">
<label for="main_image">
<?php echo JText::_('Main Image'); ?>:
</label>
</td>
<td>
<input class="text_area" type="text" name="main_image" id="main_image" size="32" maxlength="250" value="<?php echo $this->lotdata->main_image;?>" /><a href="#" onClick="return false;" id="mainOpen">Browse</a>
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
<label for="floor_plan">
<?php echo JText::_('Floor Plan'); ?>:
</label>
</td>
<td>
<input class="text_area" type="text" name="floor_plan" id="floor_plan" size="32" maxlength="250" value="<?php echo $this->lotdata->floor_plan;?>" /><a href="#" onClick="return false;" id="floorOpen">Browse</a>
</td>
</tr>
基本上我使用AJAX来获取文件的格式列表/目录。然后,使用javascript我们选择我们想要的文件并在对话框关闭时输出路径。
0
我想你可以使用内置的Joomla!表单字段文件清单:此
<field name="myfile" type="filelist" default="" label="Select a file" description="" directory="administrator" filter="" exclude="" stripext="" />
充分的选择是:
文件列表表单字段类型提供一个下拉从指定目录中的文件列表。如果该字段具有保存的值,则在首次加载页面时选择该字段。如果不是,则选择默认值(如果有的话)。
Params.filelist.jpg 默认情况下,列表中的第一项是' - 不要使用 - '(可翻译的)并且给定值'-1',然后是' - 使用默认值 - '(也可翻译)给定值'0'。
- 类型(必选)必须是filelist。
- 名称(必填)是该字段的唯一名称。
- 标签(必选)(可翻译)是 描述性字段的标题。目录(可选)是包含要列出文件的目录的 文件系统路径。 如果省略,则假定JPATH_ROOT给出的目录。
- 默认(可选)是默认文件名。
- 说明(可选) (可翻译)是当用户将鼠标移到下拉框上时将显示为工具提示的文本。
- 过滤器(可选)是一个 正则表达式字符串,用于过滤选中包含在下拉列表中的文件列表 。如果省略,则包括目录中的所有文件 。在排除参数表达式之前应用的过滤器参数表达式为 。有关构建正则表达式的 的信息,请参阅参数 参数中的正则表达式。
- exclude(可选)是一个正则表达式字符串,它是用于从列表中排除文件的 。在过滤器参数表达式之后应用排除参数表达式 。有关构建正则表达式的 的信息,请参阅参数 参数中的正则表达式。
- stripext(可选)是一个布尔参数。如果为true,则将从列出的文件名中去除 文件扩展名。 另请注意,文件名将被保存,但不包含扩展名。
- hide_none(可选)是一个布尔参数。如果为true,则从下拉列表中省略' - 不要 使用 - '项目。
- hide_default (可选)是一个布尔参数。如果为true,则从下拉列表中省略' - Use default - '项目 。
这里是我得到清单的地方,我知道我不应该只是链接,所以我复制/粘贴,但我会提供原始链接,以防文档更新。 https://docs.joomla.org/Filelist_form_field_type
相关问题
- 1. 添加图片到Joomla JToolBar中自定义链接按钮
- 2. 自定义AlertDialog.Builder添加自定义按钮事件点击
- 3. 添加自定义按钮的UITabBarController(中间添加按钮)
- 4. Joomla自定义组件
- 5. 自定义浏览按钮上传文件
- 6. Joomla自定义管理按钮动作
- 7. Joomla自定义Joomla组件集成com_user
- 8. jQuery datepicker添加自定义按钮
- 9. Radgrid CommandItemSettings添加自定义按钮
- 10. 使用AsyncDisplayKit添加自定义按钮
- 11. 将自定义按钮添加到SlickGrid?
- 12. 将自定义按钮添加到Galleria
- 13. 添加按钮自定义导航栏
- 14. 在acumatica中添加自定义按钮
- 15. iOS QuickLook添加自定义按钮
- 16. MPMoviePlayerController添加自定义播放按钮
- 17. 在K2组件上添加自定义字段类型joomla 2.5
- 18. joomla自定义组件 - 添加富文本支持
- 19. 的Joomla JCE与JCE以及自定义组件数据添加到浏览器链接
- 20. Flex自定义按钮组件
- 21. Joomla添加自定义表格
- 22. Joomla文章添加自定义选项
- 23. 定制的浏览按钮
- 24. 谷歌浏览器的自定义后退按钮
- 25. 自定义单选按钮的iOS Safari浏览器不可见
- 26. 添加自定义CSS添加此按钮?
- 27. Joomla自定义用户组
- 28. 在我的自定义网页浏览器中加载/刷新按钮
- 29. 如何添加多个自定义控件按钮传单js?
- 30. 在WordPress的自定义插件添加按钮
如何将代码块格式化为php? – BeaverusIV 2012-03-21 23:06:44
试图生成缩略图,但该死的Joomla!的结构正在使它很难做... – BeaverusIV 2012-03-22 03:52:29