Я разрабатываю компонент в J! 2.5 и хотите добавить кнопку обзора на бэкэнд, чтобы пользователь мог выбрать файл, который они ранее загружали. Как я могу это сделать?Joomla пользовательский компонент, добавляющий кнопку обзора
ответ
Это то, что я придумал, если кто-то может сделать его более надежным и многоразовым, это было бы здорово. Я могу сделать это сам позже, но пока у меня есть невозможный срок.
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, мы выбираем нужный файл и выводим путь по закрытию диалогового окна.
Я думаю, вы можете использовать встроенный Joomla! поле формы Filelist для этих
<field name="myfile" type="filelist" default="" label="Select a file" description="" directory="administrator" filter="" exclude="" stripext="" />
Полных опций:
В списке файлы типа поле формы обеспечивает выпадающий список файлов из указанного каталога. Если поле имеет сохраненное значение, оно выбирается при первой загрузке страницы. Если нет, выбрано значение по умолчанию (если оно есть).
Params.filelist.jpg По умолчанию первый элемент в списке - «Не использовать -» (который является переводимым) и ему присваивается значение «-1», а за ним следует «Использовать по умолчанию» - '(также можно перевести) с учетом значения' 0 '.
- тип (обязательный) должен быть filelist.
- имя (обязательное) - это уникальное имя поля.
- ярлык (обязательно) (переводимый) является описательным названием поля. directory (необязательно) - это путь файловой системы к каталогу, содержащему перечисленные файлы. Если опущен каталог, указанный JPATH_ROOT.
- default (необязательно) - это имя файла по умолчанию.
- описание (необязательно) (перевод) - это текст, который будет отображаться в виде подсказки, когда пользователь перемещает мышь над раскрывающимся списком.
- фильтр (необязательно) - строка регулярных выражений , которая используется для фильтрации списка файлов , выбранного для включения в раскрывающийся список. Если опущено, все файлы в каталоге включены. Выражение аргумента фильтра: , применяемое перед выражением аргумента exclude. Для получения информации о построения регулярных выражений см. Регулярные выражения в параметрах аргументов.
- exclude (необязательно) является строкой регулярного выражения, которая является , используемой для исключения файлов из списка. Выражение аргумента exclude применяется после выражения аргумента фильтра. Для получения информации о построения регулярных выражений см. Регулярные выражения в параметрах аргументов.
- stripext (необязательно) является логическим аргументом. Если true, то расширения имен файлов будут удалены из перечисленных имен файлов. Также обратите внимание, что имя файла будет сохранено без расширения.
- hide_none (необязательно) является логическим аргументом. Если true, в раскрывающемся списке отсутствует элемент «- Do not use -».
- hide_default (необязательно) является логическим аргументом. Если true, параметр «Использовать по умолчанию» - исключен из раскрывающегося списка.
Здесь я получил список, я знаю, что я не должен просто ссылаться, поэтому я скопировал/вставил, но я поставлю исходную ссылку, если документы будут обновлены. https://docs.joomla.org/Filelist_form_field_type
- 1. Как обновить пользовательский компонент Joomla?
- 2. joomla менеджер меню пользовательский компонент
- 3. Joomla - Пользовательский компонент URL Rewrite
- 4. Joomla! пользовательский компонент css issue
- 5. Компонент Joomla TPlancer, добавляющий новое поле и отображающий
- 6. Пользовательский компонент Joomla необходимо создать меню
- 7. Как создать пользовательский компонент для Joomla 3.3?
- 8. компонент Joomla
- 9. Как создать кнопку обзора
- 10. Как настроить кнопку обзора?
- 11. Компонент Joomla - Связанные таблицы
- 12. Пользовательский домен с Joomla
- 13. Запретить браузеру настраивать кнопку обзора
- 14. Компонент Joomla - как преобразовать стандартную форму php в компонент joomla
- 15. Загрузить без кнопки загрузки и кнопку обзора
- 16. Как отправить POST содержимое, указанное в редакторе Joomla - Пользовательский компонент
- 17. Как вызвать компонент отзыва в пользовательский модуль в joomla 2.5?
- 18. Joomla JCE добавить пользовательский компонент данных для связи браузера
- 19. Добавление модальной формы в мой пользовательский компонент Joomla 3
- 20. пользовательский компонент неправильно установлен в joomla 1.5.x
- 21. Joomla 1.5 Пользователь переднего плана добавляет содержимое в пользовательский компонент
- 22. Как интегрировать селектор мультимедиа joomla в пользовательский компонент
- 23. Пользовательский компонент Joomla 2.5: создать путь при установке
- 24. Компонент Joomla 2.5
- 25. компонент поиска Joomla
- 26. Создать новый компонент Joomla
- 27. Компонент расписания Joomla
- 28. Невозможно просмотреть Joomla компонент
- 29. Отключить компонент Joomla com_content
- 30. Компонент Joomla Newsletter
Как отформатировать блоки кода как php? – BeaverusIV
Попытка создания эскизов, но черт возьми, структура Joomla! Делает это трудно сделать ... – BeaverusIV