модуль - публикации

модуль - публикации

от Андрей Тюфтин -
Количество ответов: 14

Здравствуйте. нужна помощь по разработке, если пишу не там, то скажите где писать..

нужно сделать модуль - публикации, т.е. таблицу - б.д. Также требуется форма по добавлению публикаций и фильтры по поиску

Что мне сейчас изучать? с чем работать? 

может кто то даст шаблон модуля или ссылку..

где искать функции по работе с таблицами и их созданию, может кто какие плагины посоветует для разбора?

Надеюсь на ваши отклики, спасибо.

 

Hello. I need help with the development, if I do not write it, then tell where to write ..

 module to do - publishing, that is table - data base, Also takes the form of publications and by adding filters to find.

 What should I study now? something to work with?

can someone give a link or module template ..

 where to look for the function to work with tables and create them, who can advise what plugins to parse?

 I hope for your feedback, thank you.

p.s. sorry for my English

В ответ на Андрей Тюфтин

Re: модуль - публикации

от Эдуард Галиаскаров -

Здравствуйте, Андрей.

Я на своей кафедре тоже год назад использовал модуль базы данных для организации учета публикаций.

Конечно не идеальное средство, но довольно гибкое. На мой взгляд там все просто, метод научного тыка вполне эффективен. делаешь - смотришь.

Я сделал отдельный курс СПИСОК НАУЧНЫХ и УЧЕБНО-МЕТОДИЧЕСКИХ ПУБЛИКАЦИЙ СОТРУДНИКОВ

В нем организовал нужный формат и структуру хранения:

1. добавил поля: Авторы, Название, Издание, Год, Тип публикации, Страницы

2. настроил шаблоны одиночной записи, списка. Насколько ума и усердия хватило

Абрамов, В.Л., Бровикова, И.Н.,Галиаскаров, Э.Г. "Рекомбинация атомов водорода на поверхности кварцевого и электрова-куумного стекла"  / Физика и химия обработки материалов,  1993, Т.3. -  - С. 87-91

 

Авторы: Бобков С.П., Власов А.П., Чаусова С.М.
Название: "Исследование автоматизированных информационных систем в химической промышленности" 
Издание: Известия вузов «Химия и хим. технол.»
Год: 2011, т.54, вып. 11
Страницы: 126-128
Тип публикации: статья 

 

Вот так это примерно выглядит.

 

 

 

В ответ на Эдуард Галиаскаров

Re: модуль - публикации

от Андрей Тюфтин -

Здравствуйте, Эдуард.

Спасибо за ответ. Но мне нужно сделать именно отдельно подключаемый плагин - модуль

для общего пользования, а не для одной системы..

В ответ на Андрей Тюфтин

Re: модуль - публикации

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Андрей Тюфтин, как я понимаю, Ваша задача Написать модуль, а не Создать средство учета публикаций.

Вся система moodle - это один большой пример кода, шаблон. Код хорошо документирован, если, конечно, вы читаете по-английски. Если загрузить код в среду разработки (я пользуюсь netbeans), то даже почти всегда будет работать поиск определения функций.

О том, как создать модуль типа "элемент курса" кратко написано тут и тут. В вашем случае я бы порекомендовал взять за образец модуль "Глоссарий", он чуть проще чем база данных. Для работы с базой данных в moodle используется глобальный объект $DB. Полное описание его методов в /moodle/li/dml/moodle_databease.php. Писать в базу данных мимо этого объекта в Для создания таблиц модуля в базе moodle используется специальный файл определения install.xml. Его можно создать с помощю средства xmldb в меню администрирования. Сразу же стоит включить в свойствах отладку на максимум и вывод сообщений об ошибках на экран - это позволит сразу писать более грамотный код. Для дальнейшего обновления стурктуры базы данных необходимо писать скрипт upgrade.php, который будет менять структуру таблицы. Фрагменты кода для этого скрипта поможет написать тот же редактор xmldb. Чтобы модуль правильно подключился и база данных создалась и обновлялась нужен файл version.php. Чтобы плагин мог существовать на нескольких языках, создаётся папке lang с языками (обязательно нужно создать ангийскую версию языкового пакета), а строки из базы переводов забираются функцией get_string. Для вывода на экран используется глобальные объекты $PAGE и $OUTPUT. Для вывода тэгов используется статический класс html_writer.

Ну а для учета публикация я бы просто сделал плагин типа Database_presets взяв за образец  /moodle/mod/data/presets/imagegallery

В ответ на Vadim Dvorovenko

Re: модуль - публикации

от Андрей Тюфтин -

в общем к созданию этого плагина приступаю только сейчас.

рассматриваю модуль глоссарий, много лишнего, куча кода, ничего не понятно, почти ничего..

как в этом разбираться??

вопросы:

1. где, конкретно, брать функции для работы с формой? 

2. все функции, которые нужны для работы плагина, прописываются ТОЛЬКО в lib.php? ну и locallib/ и какие мне понадобятся основные для моего плагина?

3. Например, мне для работы плагина нужны только две таблицы в бд, в одной будут все публикации (которые видит администратор) и ползовательская таблица, где будут публикации только пользователя, вопрос, будет ли мне достаточно только этих двух таблиц?

4. Знает кто нибудь более простой плагин, где взаимосвязь только формы и бд? в глосссарии очень много всего, как это понимать я незнаю)

5. Есть ли пример плагина, где можно наглядно просмотреть возможности работы формы и бд?

6. У moodle уж очень своеобразный стиль кода, кто может рассказать о его особенностях? кроме тех, что упомянуты выше

7. и в какой последовательности вообще писать модуль?

спасибо за внимание

В ответ на Андрей Тюфтин

Re: модуль - публикации

от Андрей Тюфтин -

Никто не поможет?(

 

очень нужно...

сейчас разбираюсь с формой, никак не могу понять организацию с формами..

для формы при добавлении плагина вроде все понятно - отдельная библиотека.

ну и для форм, например как в глоссарии, добавлении записи - тоже понятно - отдельная библиотека.

а все что выводиться в реальном времени - не очень понятно. 

сейчас разбираю таб бар(вкладки), кто сможет рассказать, хотя бы про его реализацию?

 

В ответ на Vadim Dvorovenko

Re: модуль - публикации

от Андрей Тюфтин -

пара вопросов..

1. Каким образом обновляется запись в lang? после добавления новых слов - ничего не меняется, даже только на английском языке. 

2. Как элементарно добавить запись с формы и вывести ее?? 

вот что я делаю (на примере добавления названия Издательства):

добавил вот в эту часть (вс запись в бд): файл edit.php


$entry->concept          = trim($entry->concept);

$entry->definition       = '';          // updated later

$entry->stranic           = '';

$entry->authors         = '';

                  $entry->phouse          = ''; -вот

$entry->year             = ''; 

$entry->type             = ''; 

$entry->definitionformat = FORMAT_HTML; // updated later

    $entry->definitiontrust  = 0;           // updated later

    $entry->timemodified     = $timenow;

    $entry->approved         = 0;

    $entry->usedynalink      = isset($entry->usedynalink) ?   $entry->usedynalink : 0;

    $entry->casesensitive    = isset($entry->casesensitive) ? $entry->casesensitive : 0;

    $entry->fullmatch        = isset($entry->fullmatch) ?     $entry->fullmatch : 0;


далее файл edit_form.php

        $mform->addElement('text', 'phouse', get_string('phouse', 'public'));

        $mform->setType('phouse', PARAM_TEXT);


вот теперь как добавить и вывести незнаю.

пробовал по примеру concept и definition - не получилось (через функции в файле lib.php)

в таблице, в бд phouse есть

      



В ответ на Андрей Тюфтин

Re: модуль - публикации

от Андрей Тюфтин -

Короче прокатила вот такая запись

$entry->concept          = trim($entry->concept);

как у concept

          $entry->phouse           = trim($entry->phouse); 

но это ведь не правильно? или правильно?

вопрос с lang еще актуален) 

В ответ на Андрей Тюфтин

Re: модуль - публикации

от vladimir Andropov -
Админка--Внешний вид--Настройка тем- убрать галку с кеширование языка.
тамже включить Режим дизайнера
Создать в lang плугина папку Ru , накидать файлов языка в кодировке utf-8


В ответ на Андрей Тюфтин

Re: модуль - публикации

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Все строки языкового пакета кэшируются. Поэтому после добавления языковых строк нужно сбрасывать кэш.

 $entry->phouse = trim($entry->phouse);  просто обрезает  текст от пробелов по краям. Это никак не связано с выводом поля на форму. 

$mform->addElement('text', 'phouse', get_string('phouse', 'public'));
$mform->setType('phouse', PARAM_TEXT);

Тут всё нормально.  Я бы ещё посоветовал доваить указать ширину поля и максимальное число символов. $mform->addElement('text', 'xxx', get_string('xxx', 'xxx'), array('size' => '100', 'maxlength'=>'100'));

Не уверен, что у вас правильное название модуля в вызове к  get_string. Ваш модуль называется public, а языковой пакет находится по пути moodle\mod\public\lang\en\public.php ?

В ответ на Vadim Dvorovenko

Re: модуль - публикации

от Андрей Тюфтин -

языковой пакет находится там, где вы и указали.

с языками вроде разобрался. спасибо.


по поводу формы. У меня была проблемы с добавлением записи в бд и выводом этой записи из бд в таблице публикаций. я все скопировал и тупо сделал как у concept (в глоссарии это термин), т.е. скопировал запись как выше, и продублировал функцию в lib.php, вроде выводит

как правильно сделать?

и новый вопрос появился, мне надо будет добавить фильтры еще, как новую вкладку создать, я постараюсь разобраться, а вот как организовать сам фильтр..например по году издания? (не по дате добавления записи. в бд будет добавляться пользователем год издания)

В ответ на Андрей Тюфтин

Re: модуль - публикации

от Андрей Тюфтин -
еще хочется видеть границы ячеек таблицы, как это сделать я так и не понял.

и как определить размеры таблицы по ширины? зафиксировать их. 

в идеале сделать таблицу как в модуле - *задание*. т.е. чтоб можно было прокручивать ее и были видны все границы.

пытался разобраться, и пытаюсь, пока ничего не понятно. буду рад любой помощи или подсказке..

вопросы выше также актуальны)
В ответ на Vadim Dvorovenko

Re: модуль - публикации

от Андрей Тюфтин -

очень надеюсь что кто то подскажет..

решил для отображения таблицы использовать tablelib.php..

3ий день разбираюсь..почти безрезультатно..


с формой добавления новой публикации - разобрался

с добавлением записи в бд - разобрался

с языками - разобрался


теперь надо, чтоб это еще красиво отображалась..поэтому tablelib.php

и, если я правильно понял, то тут не сложно добавляются фильтры сортировки по заголовкам в настройках таблицы в коде..

вроде бы выглядит все просто, но ничего не получается(

вот, хотя бы такую табличку сделать "/admin/user.php" - тут без библиотеки tablelib..


очень надеюсь на вашу помощь..


п.с. просмотрел все файлы, где используется эта библиотека, почти ничем мне это не помогло 

прикрепил, сразу говорю,  ужасный код,..