我正在開發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