Giter VIP home page Giter VIP logo

library's Introduction

Тестовое задание PHP разработчика


Запуск проекта:

  1. Скачать проект с github
  2. Создать базу занных, прописать соединение с БД, в корне проекта лежит дамп базы данных с названием "library".
  3. Запустить локальный сервер
  4. Проект будет доступен по адресу: http://localhost/library
  5. Из консоли проект можно запустить командой php yii serve --docroot="@app"

Функциональные требования

Меню

Должно содержать следующие элементы: Материалы - при клике должна открываться страница списка материалов; Теги - при клике должна открываться страница списка тегов; Категории - при клике должна открываться страница списка категорий;

Страница списка материалов

На данной странице должны располагаться: кнопка “Добавить” - при клике должна открываться страница создания и редактирования материала;
блок поиска:
поисковая строка;
кнопка “Искать”:
при клике должен происходить поиск по материалам;
если поисковая строка не пустая, то должны искаться вхождения поисковой строки в название материала, авторах, тегах и категориях;
таблица результатов поиска, со столбцами:
Название - название материала в виде ссылки на просмотр материала;
Авторы - авторы материала;
Тип - тип материала;
Категория - категория материала;
Действия:
Редактирование - при клике должна открываться страница создания и редактирования материала;
Удаление - при клике должно запрашиваться подтверждение удаления, при одобрении должно происходить удаление материала;

Страница создания и редактирования материала

На данной странице должны располагаться:
Тип - обязательное, возможен выбор одного значения из перечисления: Типы материала (см. пункт 3 ТЗ);
Категория - обязательное, выпадающий список категорий;
Название - строка, обязательное;
Авторы - необязательное, текстовое;
Описание - необязательное, многострочное;
кнопка “Добавить” - при клике должна происходить валидация формы и если нет ошибок то материал должен сохраниться;

Страница просмотра материала

На данной странице должны располагаться:
Заголовок по шаблону: %название%
Автор;
Тип;
Категория;
описание;
блок “Теги”:
панель добавления тега, состоит из:
поле “название тега” - обязательное, выпадающий список из тегов;
кнопка “добавить” - при клике должна происходить валидация, если успешно до должен добавиться тег к материалу;
список добавленных тегов, где каждый элемент состоит из:
название в виде ссылки - при клике должна открываться страница просмотра материалов с поиском по выбранному тегу;
кнопка удаления тега - при клике должно запрашиваться подтверждение удаления, в случае подтверждения тег должен удалиться;
блок Ссылки:
кнопка “Добавить” - при клике должен появиться диалог добавления ссылки;
диалог добавления и редактирования ссылки, состоит из:
Подпись ссылки - не обязательное;
Ссылка - обязательное, в формате url;
кнопка “Добавить” - при клике должна происходить валидация данных и в случае успеха должна добавится ссылка к материалу;
кнопка “Закрыть” - при клике должно закрываться диалоговое окно;
список ссылок, где каждый элемент состоит из:
подпись в виде ссылки (если подпись не задана, то должна выводиться ссылка);
кнопка редактирования - при клике должен открываться диалог добавления и редактирования ссылки;
кнопка удаления ссылки - при клике должно запрашиваться подтверждение удаления, в случае подтверждения ссылка должна удаляться;

Страница просмотра материала

На данной странице должны располагаться:
кнопка “Добавить” - при клике должна открываться страница создания и редактирования тега;
список тегов, где каждый элемент состоит из:
название - название тега;
кнопка “Редактировать” - при клике должна открываться страница создания и редактирования тега;
кнопка “Удалить” - при клике должно запрашиваться подтверждение удаления, в случае подтверждения тег должен удалиться;

Страница создания и редактирования тега

На данной странице должны располагаться: поле “Название” - обязательное; кнопка “Добавить” - при клике должна происходить валидация данных, если успешна, то тег должен сохраниться и открыться страница списка тегов;

Страница списка категорий

На данной странице должны располагаться: кнопка “Добавить” - при клике должна открываться страница создания и редактирования категории; список категорий, где каждый элемент состоит из: название - название категории; кнопка “Редактировать” - при клике должна открываться страница создания и редактирования категории; кнопка “Удалить” - при клике должно запрашиваться подтверждение удаления, в случае подтверждения категория должна удалиться;

Страница создания и редактирования категория

На данной странице должны располагаться: поле “Название” - обязательное; кнопка “Добавить” - при клике должна происходить валидация данных, если успешна, то категория должна сохраниться и открыться страница списка категорий;

Не функциональные требования

выполнять задание можно на Yii2, Laravel или чистом PHP; версию PHP использовать не менее версии 7.4; в качестве базы данных можно использовать MySql или PostgreSql; в работе нужно использоваться систему версионирования кода Git (gitlab.com ,github.com, bitbucket.org); Приветствуется наличие развернутой версии на хостинге и/или описание по развертыванию проекта. Так же приветствуется заполнение проекта тестовыми данными для демонстрации отображения;

Перечисления

Типы материала Книга Статья Видео Сайт/Блог Подборка Ключевые идеи книги

library's People

Contributors

ninel-zabaykina avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.