Giter Site home page Giter Site logo

treeentitles's Introduction

Решение технического задания

Инициализация проекта

  • git clone https://github.com/andymab/treeentitles you-domain

  • cd you-domain/

  • cp ./.conf.example.php ./.conf.php

  • Создать базу данных в MySql

  • Прописать в .conf.php имя базы данных, пользователя, пароль

  • php -S localhost:8000 server.php ( команда выполняется если у Вас не запущен свой сервер )

  • Перейти в браузере по адресу http://localhost:8000/setup.php ( создаст необходимые таблицы и пользователей ) в случае успеха перекинет на главную, в данном конкретном случае на http://localhost:8000

  • После чего можно работать по назначению, пароли пользователя и администратора смотри ниже

Основа проекта

Основой проекта является MVC написанная мной ранее Основной принцип работы ее следующий index.php: исполняет роль route и инициализации

  1. подгружаем установки конфигурации
  2. Определяем и загружаем autoloader классов
  3. Начинаем инициализировать запрашиваемый контроллер и его методы класс Controller
    1. Инициализируем работу с сессиями класс Session
    2. Инициализируем доступ к контроллеру и его методам класс Access
    3. Инициализируем представление класс View
  4. Осуществляем проверку доступности и доступа к контроллеру и его методам, в случае доступности и доступа обращаемся к нужному контроллеру и его методу.
  5. Полученный результат выводим в класс View (представление)

Сущности согласно тестового задания

  1. Титульная страница (доступна всем) (/)
  2. Войти (/login) / Выйти (/outLogin) для пользователя или администратора

Пользователь:

Администратор:

  1. Страница пользователя /userDashboard
  2. Страница администратора /adminDashboard

Тестовое задание

Необходимо создать две страницы:

  1. для просмотра пользователями
  2. для администратора

Страница администратора

  1. Вход на страницу администрирования осуществляется только авторизованными пользователями по логину и паролю. Логин и пароль хранятся в базе данных, причем пароль – в зашифрованном виде.
  2. В случае успешной авторизации, администратор допускается до редактирования «структуры данных». «Структура данных» представляет из себя дерево объектов, состоящих из двух полей:
    • название,
    • описание.
  3. Каждый объект может являться потомком другого объекта и быть родителем других объектов. При этом родитель у объекта только один, а потомков неограниченное множество. Глубина дерева не ограничена. Объекты, не имеющие родителей, являются корневыми. Объекты хранятся в базе данных.
  4. Администратор видит текущее состояние «структуры данных», при этом визуально обозначена иерархия объектов в дереве (например, количеством отступов слева в зависимости от уровня вложенности объекта). С помощью находящихся на странице форм администратор имеет возможность:
    • добавлять объект на любой уровень дерева;
    • удалять любой объект, при этом если у удаляемого объекта имеются потомки, то они также удаляются;
    • редактировать любой объект, изменяя его название, описание или родителя. Все произведенные изменения сохраняются в базе данных.
  5. Нажав на соответствующую кнопку, администратор может разлогиниться, покинув страницу администрирования.

Страница пользователя

  1. Страница открыта для всех и на ней в виде дерева отображается «структура данных», заведенная администратором на странице администрирования. Иерархия объектов отображается визуально, при этом показаны только названия объектов.
  2. По умолчанию отображаются только корневые объекты. Если у какого-то из объектов имеются потомки, то справа от его названия отображается иконка (например, плюс), при нажатии на которую показываются потомки первого уровня данного объекта. Если у какого-то из потомков первого уровня в свою очередь имеются потомки, то они также отображаются только после нажатия на иконку справа от названия их родителя. Это правило действует для объектов любого уровня.
  3. При нажатии на название объекта в отдельном блоке на странице (например, справа от дерева) отображается его описание. Если описания нет, то блок отображается пустым.

Требования к выполнению задания

  1. Реализация задания на PHP 5, JavaScript, HTML (приветствуется использование HTML5 и CSS3). В качестве базы данных используется MySQL.
  2. Задание необходимо выполнить без применения фреймворков (как PHP, так и JavaScript, то есть использовать jQuery не нужно) и использования стороннего кода.
  3. JavaScript и стили, используемые на странице, должны быть кроссбраузерными: Chrome, Firefox, Opera, Safari.
  4. Внедрение системы валидации введенных данных не обязательно, защита «от дурака» и от взлома не требуется, однако, безусловно, будет приветствоваться.
  5. Требования к стилистическому оформлению страниц минимальные, необходима лишь понятность интерфейса.
  6. Ориентировочный срок выполнения задания указан в письме. Если Вам потребуется больше времени, пожалуйста, заранее сообщите ответным письмом на электронный адрес.
  7. Данное задание составлено для определения уровня Ваших знаний: если Вы не сможете реализовать какую-то его часть, то можете ее упростить или не выполнять (например, не сделать систему авторизации администратора). В таком случае, пожалуйста, сообщите, с чем именно у Вас возникли проблемы.

treeentitles's People

Contributors

mabandy 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.