Поле "Файл" в ресурсе "База данных"

Поле "Файл" в ресурсе "База данных"

от nata sha -
Количество ответов: 8

Помогите, пожалуйста.

Суть проблемы. В курсе есть ресурс "База данных", в этой БД есть поле "Файл". При добавлении новой записи в БД для поля "Файл" есть область "Имя файла (необязательно)". Можно ли сделать так, чтоб в этой области по умолчанию отображалось какое-то слово, например, слово "Скачать"?

В ответ на nata sha

Re: Поле "Файл" в ресурсе "База данных"

от Artem Andreev -
Изображение пользователя Эксперт по Moodle

Нет времени экспериментировать, потому полностью работоспособное решение привести не могу.

Но направление движения следующее: через javascript вы можете управлять содержимым страницы. В БД есть шаблон javascipt. Соответственно необходимо написать код javascript, который для поля будет заполнять его значение и поместить этот код в шаблон javascript.

В ответ на nata sha

Re: Поле "Файл" в ресурсе "База данных"

от Vadim Tabunshchik -
Изображение пользователя Developers

Если Вы создаете поле "Файл" для записи БД и ничего не пишите в необязательном поле "Имя файла", то будет отображаться реальное имя прикрепляемого файла (например, Report.pdf).

Логически рассуждая, написав в каждой записи БД в таких полях слово "Скачать", Вы получите везде ссылку Скачать с иконкой типа файла, или впишите свое название, все равно оно будет ссылкой для скачивания прикрепляемого к записи БД файла.

В ответ на Vadim Tabunshchik

Re: Поле "Файл" в ресурсе "База данных"

от nata sha -

Понятно, что я могу руками прописать туда любое слово. Но хотелось бы, чтобы оно было уже прописано туда по умолчанию. Потому как БД заполняют разные пользователи и один пишет "скачать", другой пишет "загрузить", а третий вообще ничего не пишет... а хотелось бы, чтоб было красиво))

А по поводу JS... уж простите, но самостоятельно мне с этим не справиться, хотелось бы что-нибудь попроще.

В ответ на nata sha

Re: Поле "Файл" в ресурсе "База данных"

от Vadim Tabunshchik -
Изображение пользователя Developers

>> БД заполняют разные пользователи и один пишет "скачать", другой пишет "загрузить", а третий вообще ничего не пишет...

Это задумка создателей Мудл - дать студенту возможность самостоятельно думать, творчески работать… А подход типа "хотелось бы, чтоб было красиво", уж извините, - устаревший (совковый), это попытка стандартизировать (всех и всё под одну гребенку) все, что можно, но не нужно. Цель - чтобы понятно было, что это за запись в БД и какой файл к ней прикреплен. И, если студент впишет в поле глупость, - разрешите редактирование записей, пусть исправит. Если ничего не впишет - будет отображаться фактическое имя файла, по которому его можно легко найти после скачивания на своем ПК. Но это только мое мнение. улыбаюсь

>> Но хотелось бы, чтобы оно было уже прописано туда по умолчанию.

Если очень сильно хочется, то предлагаю решение без JS, но с правкой кода Мудл (у меня версия 1.9.10+ Build: 20101102):

  • найдите файл field.class.php в каталоге Moodle /mod/data/field/file;
  • в этом файле найдите строку, отвечающую за поле "Имя файла" (у меня это 58 строка) и сделайте некоторые правки:
    $str .= get_string('optionalfilename','data').' <input type="text hidden" name="field_' .$this->field->id.'_filename"
    id="field_'.$this->field->id.'_filename" value="'.s($displayname)..get_string('download','data').'" /><br />';
  • я думаю, понятно, что красное зачеркнутое - удалить, зеленое полужирным - вписать улыбаюсь

Что получится в результате: поле вообще будет скрыто от пользователей, заполняться оно будет автоматически словом из языка, кот. установлен в  курсе (Скачать, Download, Завантажити и т. д.), при скачивании файл будет представлен своим оригинальным именем.

В ответ на nata sha

Re: Поле "Файл" в ресурсе "База данных"

от Alexander Taranenko -

Могу предложить такой вариант:

Редактируем файл \mod\data\field\file\field.class.php

Находим там строки:

$source = get_file_url($this->data->course.'/'.$CFG->moddata.'/data/'.$this->data->id.'/'.$this->field->id.'/'.$recordid);
} else {
$src = '';
$name = '';
$displayname = '';
$source = '';

Нам нужна строка $displayname = ''; (у меня это 50-я строка)

Вписываем в кавычки нужно слово. У меня эта строка выглядит так:

$displayname = 'File';

Теперь у меня при заполнении поля "Файл" автоматом подставляется отображаемое имя как File. Единственная проблема, она не подставляет корректно киррилические символы. Думаю, нужно немного поиграться с кодировкой.

В ответ на Alexander Taranenko

Re: Поле "Файл" в ресурсе "База данных"

от Vadim Tabunshchik -
Изображение пользователя Developers

Поле нужно прятать вообще, т. к. то, что в нем будет отображаться по-умолчанию (отображаемое имя как File), можно редактировать (изменить/удалить). См. решение выше…

В ответ на Vadim Tabunshchik

Re: Поле "Файл" в ресурсе "База данных"

от Alexander Taranenko -

Да, согласен. Я просто невнимательно прочитал уточнение топикстартера.