Git Product home page Git Product logo

menus-tree's Introduction

Kreator menu

Interaktywny kreator do tworzenia menu z zagnieżdżonymi elementami.


.1. Wstęp:
Tworzone menu ma strukturę drzewa i może być zapisane w formacie JSON w bazie
danych, a następnie pobrane za pomocą wygenerowanego ID w formacie uuid4
dostępnego w części "query" adresu URL, jako wartość parametru "id". Czyli:

?id=<wygenerowane_id>

Utworzony JSON może służyć do wyrenderowania menu już bez znaków "+" w 
środowisku produkcyjnym.

Łańcuch znaków w formacie JSON zawiera informacje o nazwach elementów i
relacjach przodek – potomek, dzięki klamrom oraz cudzysłowom.


.2. Wymagane komponenty:
.2.2. Serwer HTTP
.2.3. Composer
.2.4. Serwer MySQL


.3. Instalacja:
.3.1. Przejść do katalogu komputera, z którego serwer HTTP może hostować ten
      kreator. W trakcie testów korzystano z Symfony Local Web Server, który 
      pozwala w prosty sposób przetestować kreator – serwer można uruchomić tam,
      gdzie jest sklonowane repozytorium.
      W przypadku serwera Apache na systemu Ubuntu 18.04 jest to katalog:
      `/var/www/html/`
.3.2. Sklonować repo `damianut/menus-tree` z GitHuba
.3.3. Wejść do sklonowanego repozytorium i zainstalować paczki określone
      w pliku `composer.json` za pomocą komendy `composer install`

      Po instalacji pojawi się błąd, w którym będzie napisane; że nie ma
      zdefiniowanej zmiennej `DATABASE_URL` – o jej zdefiniowaniu będzie 
      napisane w kolejnych punktach.
.3.4. Uruchomić MySQL serwer.
.3.5. Utworzyć w nim pustą bazę danych przykładowo o nazwie `menus_tree`.
      Potem utworzyć użytkownika np. 'naver'@'localhost' z hasłem.
      Do poświadczania użytkownika korzystałem z pluginu
      `mysql_native_password`. 
      Następnie nadać mu wszystkie uprawnienia do `menus_tree`.* 
.3.6. Określić wersję używanego serwera MySQL w pliku
      `config/packages/doctrine.yaml`
.3.7. Utworzyć plik `.env.local` w katalogu głównym sklonowanego repozytorium,
      a w nim zmienną DATABASE_URL zgodnie z formatem określonym w pliku `.env`.
      W polach `db_user`, `db_password` i `db_name` podać odpowiednio nazwę
      utworzonego użytkownika, jego hasło i nazwę utworzonej bazy danych.
.3.8. Jeśli dane wprowadzone w zmiennej DATABASE_URL zawierają zarezerwowane
      znaki zdefiniowane w RFC 3986, to proszę zapoznać się
      z nastepującą stroną:
      https://symfony.com/doc/current/doctrine.html#configuring-the-database
.3.9. Zaimportować plik `mysql/trees.sql` do utworzonej bazy danych.
.3.10. Uruchomić serwer. Jeśli korzystamy z Symfony Local Web Server, to po
       uruchomieniu strona z kreatorem powinna być domyślnie dostępna
       pod adresem: `127.0.0.1:8000`
.3.11. Uruchomić przeglądarkę (projekt był testowany w Mozilla Firefox, przy
       wyłączonej pamięci podręcznej) i wejść adres, pod którym dostępny jest
       plik `public/index.php`. W przypadku serwera Symfony jest to adres
       wspomniany w poprzednim podpunkcie.
.3.12. W zaimportowanej tabeli z pliku `trees.sql` znajduje się już jeden wpis
       z danymi o menu. Aby zobaczyć te menu, należy dopisać do adresu URL
       zapytanie:
       ?id=1c6d7e6d-7c81-4931-8343-d3a36ad17659
.3.12. Instrukcja korzystania z kreatora jest dostępna po kliknięciu 
       niebieskiego przycisku "Opis korzystania" na górze strony.


.4. TODO:
.4.1. Przemieszczanie elementów menu nie działa intuicyjnie, gdy użytkownik chce
      umieścić element menu jako przedostatni w danym menu lub podmenu.
.4.2. Umożliwić przemieszczanie elementów do pustego podmenu (zawierającego w
      momencie przemieszczania wyłącznie przycisk ze znakiem "+") bez
      konieczności tworzenia tymczasowego elementu w pustym podmenu,
.4.3. Zmienić sposób przetwarzania danych o drzewie menu lub strukturę bazy
      danych tak, by można było poszerzać kreator o dodatkowe funkcjonalności
      np. tworzenie z elementu menu linka do innej strony.
/*............................................................................*/

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.