Модуль используется для поиска документов об образовании в архиве института. Реализация модуля выполнена на языке программирования php в виде модуля для сайта визитки института. Для удобного отображения результата применена технология ajax.
Модуль реализован в виде html формы с обязательными полями:
- Серия диплома
- Номер диплома
- Фамилия выпускника
Файловая структура
mod_archive_of_diplomas
— директория модуля на сервере.- tmpl
default.php
— шаблон модуля, который принимает данные, собранныеmod_archive_of_diplomas.php
и генерирует HTML, который будет отображаться на странице.
helper.php
— файл содержит вспомогательный класс, используемый для того, чтобы сделать фактическую работу в получении информации, которая будет отображаться в модуле.mod_archive_of_diplomas.php
— основной файл входа для модуля, который выполняет необходимые процедуры инициализации, вызова вспомогательных средств для сбора данных и содержит шаблон для отображения вывода модуля.mod_archive_of_diplomas.xml
— файл содержит информацию о модуле и определяет файлы, которые должны быть установлены установщиком Joomla! Так же данный файл задает параметры конфигурации модуля.
- tmpl
Исходный код
tmpl/default.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;
$document = JFactory::getDocument();
$document->addScript('/modules/mod_archive_of_diplomas/script.js?'. time());
$option['driver'] = 'mysql';
$option['host'] = '';
$option['user'] = '';
$option['password'] = '';
$option['database'] = '';
$option['prefix'] = '';
$db = & JDatabase::getInstance( $option );
if ( isset( $_REQUEST["ad_series"] ) && isset( $_REQUEST["ad_number"] ) && isset( $_REQUEST["surname"] ) ) {
$ad_series = $_REQUEST["ad_series"];
$ad_number = $_REQUEST["ad_number"];
$surname = $_REQUEST["surname"];
print '<hr>';
$query_diploms = $db->getQuery(true);
$query_diploms -> select('ad.ad_series, ad.ad_number, ad.ad_reg_number, ad.ad_date_vypuska, u.surname, u.name, u.patronymic, s.title');
$query_diploms -> from($db->quoteName('applications_diploms', 'ad'));
$query_diploms -> join('LEFT OUTER', $db->quoteName('applications', 'a') . ' ON (' . $db->quoteName('ad.application_id') . ' = ' . $db->quoteName('a.id') . ')');
$query_diploms -> join('LEFT OUTER', $db->quoteName('users', 'u') . ' ON (' . $db->quoteName('a.user_id') . ' = ' . $db->quoteName('u.user_id') . ')');
$query_diploms -> join('LEFT OUTER', $db->quoteName('specialties', 's') . ' ON (' . $db->quoteName('a.special_id') . ' = ' . $db->quoteName('s.special_id') . ')');
$query_diploms -> where($db->quoteName('ad.ad_series')." = ". $db->quote($ad_series));
$query_diploms -> where($db->quoteName('ad.ad_number')." = ". $db->quote($ad_number));
$query_diploms -> where($db->quoteName('u.surname')." = ". $db->quote($surname));
$db -> setQuery( $query_diploms, 0, 1 );
$diploms = $db->loadObjectList();
if( count( $diploms ) > 0 ) {
$ad_series = $diploms[0]->ad_series;
$ad_number = $diploms[0]->ad_number;
$ad_reg_number = $diploms[0]->ad_reg_number;
$ad_date_vypuska = $diploms[0]->ad_date_vypuska;
$surname = $diploms[0]->surname;
$name = $diploms[0]->name;
$patronymic = $diploms[0]->patronymic;
$title = $diploms[0]->title;
$fio = '';
if( !empty( $surname ) ) $fio .= ' '. $surname;
if( !empty( $name ) ) $fio .= ' '. $name;
if( !empty( $patronymic ) ) $fio .= ' '. $patronymic;
print '<div class="alert alert-success" style=" font-size: 1.6em; ">Документ об образовании внесен в реестр как выданный на имя: '. $fio .'. Регистрационный номер: '. $ad_reg_number .'. Дата выдачи: '. date("d.m.Y.", strtotime( $ad_date_vypuska )) .' Направление подготовки (специальность): '. $title .'. Серия бланка: '. $ad_series .', номер бланка: '. $ad_number .'</div>';
} else {
print '<div class="alert alert-danger">';
print '<p>Информация не найдена</p>';
print '</div>';
}
print '<hr>';
}
print '<div class="alert alert-info">';
// print '<p>Для поиска документа в <a href="/reestr" class="a-link">реестре</a> заполните форму и нажмите кнопку «Найти».</p>';
print '<p>Для поиска документа в реестре заполните форму и нажмите кнопку «Найти».</p>';
print '<p>Все поля обязательны к заполнению.</p>';
print '</div>';
print '<form id="form_archive_of_diplomas_search" action="" method="POST">';
// print '<form id="form_archive_of_diplomas_search" action="">';
print '<div class="row">';
print '<div class="col-md-4 col-xs-12">';
print '<div class="form-group" id="form_ad_series">';
print '<label class="control-label">Серия диплома *</label>';
print '<input type="text" name="ad_series" class="form-control" placeholder="100000" pattern="[0-9]{6}" onkeyup="this.value=this.value.replace(/[^0-9]/g,\'\')" />';
print '<div id="ad_series_correct" class="help-block"> </div>';
print '</div>';
print '</div>';
print '<div class="col-md-4 col-xs-12">';
print '<div class="form-group" id="form_ad_number">';
print '<label class="control-label">Номер диплома *</label>';
print '<input type="text" name="ad_number" class="form-control" placeholder="0000001" pattern="[0-9]{7}" onkeyup="this.value=this.value.replace(/[^0-9]/g,\'\')" />';
print '<div id="ad_number_correct" class="help-block"> </div>';
print '</div>';
print '</div>';
print '<div class="col-md-4 col-xs-12">';
print '<div class="form-group" id="form_surname">';
print '<label class="control-label">Фамилия выпускника *</label>';
print '<input type="text" name="surname" class="form-control" placeholder="Иванов" />';
print '<div id="surname_correct" class="help-block"> </div>';
print '</div>';
print '</div>';
print '</div>';
print '<div class="text-right">';
print '<button type="button" class="btn btn-success btn-lg" disabled>Найти</button>';
print '</div>';
print '</form>';
helper.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;
/**
* Class Module Helper
* @author alvasdem
*/
class modArchiveOfDiplomasHelper
{
/**
* getData method
* @param $params
* @return array
*/
static function getData( $params )
{
$db = JFactory::getDbo();
return array();
}
}
mod_archive_of_diplomas.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;
require_once( dirname( __FILE__ ) . '/helper.php' );
$data = modArchiveOfDiplomasHelper::getData( $params );
$moduleclass_sfx = htmlspecialchars( $params->get( 'moduleclass_sfx' ) );
require( JModuleHelper::getLayoutPath( 'mod_archive_of_diplomas', $params->get( 'layout', 'default' ) ) );
mod_archive_of_diplomas.xml
XML
<?xml version="1.0"?>
<extension type="module" version="1.0.0" method="upgrade" client="site">
<name>Реестр дипломов</name>
<author>alvasdem</author>
<authorEmail></authorEmail>
<authorUrl></authorUrl>
<copyright></copyright>
<license></license>
<version>1.0</version>
<description></description>
<files>
<filename module="mod_archive_of_diplomas">mod_archive_of_diplomas.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<folder>tmpl</folder>
</files>
<languages>
<language tag="en-GB">language/en-GB.mod_archive_of_diplomas.ini</language>
<language tag="en-GB">language/en-GB.mod_archive_of_diplomas.sys.ini</language>
<language tag="ru-RU">language/ru-RU.mod_archive_of_diplomas.ini</language>
<language tag="ru-RU">language/ru-RU.mod_archive_of_diplomas.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="advanced">
<field name="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"/>
<field name="moduleclass_sfx" type="text" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"/>
<field name="cache" type="list" label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC" default="1">
<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
<option value="1">JGLOBAL_USE_GLOBAL</option>
</field>
</fieldset>
</fields>
</config>
</extension>