Skip to content

rsukhar/devstarter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание на позицию веб-разработчика

1. Развернуть devstarter.local

1.1. Скопировать репозиторий:

git clone [email protected]:/rsukhar/devstarter.git devstarter.local

1.2. Установить Vagrant и Virtual Box

1.3. Создать виртуальную машину

cd devstarter.local
vagrant up

Если всё сделано правильно, то открыв в браузере http://devstarter.local/, вы увидите страницу авторизации и сможете авторизоваться, используя данные:

  • Имя пользователя: admin
  • Пароль: admin

2. Разобраться, как сейчас работает список учеников

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

2.2. С помощью http://devstarter.local/phpmyadmin/ посмотреть структуру базы данных

2.3. Найти и понять, как задаются роуты страниц учеников в routing.php

  • /admin/students/
  • /admin/students/create/
  • /admin/students//update/
  • /api/student/delete/

2.4. Найти сделанную миграцию в .provision/sql/migration-*-students.sql, которая использовалась для создания и временного наполнения таблицы пользователей

Миграции такого рода выполняются с помощью shell-команды

./minion.php --task=migrate --debug=1

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

2.5. Найти модель ученика Model_Student, обратить внимание:

  • Стандартное описание БД-привязок модели в соответствии с ORM-стандартами Kohana/Koseven
  • В методе describe_vof_fields описываются контролы для редактирования полей модели и их валидации

Контролы для редактирования описываются в формате VOF ("vsekolesa options framework"). При желании можно их посмотреть доступные типы контролов в views/admin/vof/fields/*, но прямо сейчас нам понадобится только текстовое поле ("text").

2.6. Найти и посмотреть контроллер Controller_Admin_Student. На что здесь важно обратить внимание:

  • В action_list добавляется $this->assets->add('student.list'); - команда, которая добавляет на страницу все необходимые статические файлы (скрипты), связанные с этой страницей. Описание логики статических файлов и зависимостей между ними находится в конфиге config/assets.php
  • Для добавления и редактирования используется один и тот же view admin/formpage, который выводит контролы для редактирования в соответствии с переденными в него настройками
  • Описание контролов для редактирования получается из describe_vof_fields объекта модели
  • Метод set_vof_values модели фильтрует, валидирует и пробует установить переданные значения в соответствии с описаниями контролов модели. Если валидация не пройдена, то он записывает ошибки во второй параметр; который в данном случае связан через bind-метод с параметром шаблона admin/formpage

2.7. Найти и посмотреть шаблон для вывода списка учеников views/admin/student/list.php. На что здесь обратить внимание:

  • В кнопки удаления добавляется data-nonce параметр, который генерируется с помощью Security::nonce('delete_student'). Это специальный параметр, уникальный для данного авторизованного пользователя в данный промежуток времени, и который будет передан в API-запрос, чтобы защитить от ряда веб-уязвимостей.

2.8. Найти и посмотреть контроллер Controller_API_Student. Он используется для удаления

2.9. Найти и посмотреть JS-скрипт assets/admin/js/student/list.js

3. Реализовать список школ

По аналогии со списком учеников нужно создать страницу списка школ /admin/schools/, в котором будут выводиться названия школ и количество учеников в каждой школе. Должна быть возможность добавлять, удалять и редактировать школы.

В файле миграций помимо структуры таблицы также нужно добавить 2 школы; и случайным образом распределить существующих учеников между школами.

В шапке справа от логотипа есть переключатель, который сейчас состоит из одного пункта "Ученики". Нужно добавить второй пункт "Школы", чтобы переключатель работал.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors