Всем здравствуйте. Начну с истории.
Устроился я на работу техником(в тех отдел), через какое-то время ковыряться с компами поднадоело и поговорив с начальником мне предложили заняться разработкой. Опыт верстки и программирования на php был. Первой задачей была "сделать телефонный справочник", погуглив я не нашел готовых решений, тогда начальник предложил WordPress. Ну не долго думая поставил на наш сервер WP, начал пробовать сделать и понял, что все как-то не так.
Во-первых не нравилось то, что слишком много доп функций в админке, много лишнего.
Во-вторых вп подключает в шаблон то, что мне не нужно, а переверстывать желание небыло.
В-третьих скорость работы, нужно было быстро выдавать информацию, записей в бд больше 3к и почему-то WP справлялся с этим крайне долго.
Начав искать новые варианты я наткнулся на node.js, и подумал "а почему бы не написать все самому". К тому же идея управлять бекэндом и фронтом при помощи одного языка мне очень нравилась.
Сказано - сделано, начал учить и сразу писать. Было много трудностей, куча камней и т.д, к тому же начальник уже стучал по голове со словами "ну когда уже". Ну пришлось "поговнокодить" т.к это изрядно ускоряло процесс.
В общем справочник был сдан, была куча правок, куча переделок но все готово и работает. Только вот "говнокод" не давал мне спать по ночам, я просыпался в поту думая о том, что можно было все сделать не идеально но гораздо лучше.
В общем, я созрел и решил сделать еще один справочник, по функционалу проще но все еще удобный для юзера. Справочник я запланировал выложить в общий доступ.
Для чего?
Во-первых это опыт.
Во-вторых я люблю заниматься подобным.
В-третьих мне хочется услышать критику и исправить его недостатки т.к сам я ввиду отсутствия опыта просто их могу не заметить.
В-четвертых хочется помочь людям которым тоже понадобиться такая штука.
Тут присутствую 2 группы кнопок
1) Left(main)
2)Center(second)
Для удобства понимания на данный момент используется в качестве кнопок branch(отделение) и floor(Этаж), но в целом можно задать все что угодно.
Зайдя на страницу справочника у вас будет показана левая группа, после выбора отделения, в центре появится вторая группа с этажами которые находятся внутри отделения. После выбора этажа вам дадут номера телефонов которые находятся в выбранном отделение, на выбранном этаже.
Так же есть поиск в 2 режимах. Поиск по все базе вне зависимости от выбранного отделения, и поиск внутри выбранного отделения.
Предельно простой функционал для пользователя.
На этом часть юзера все. По части админа все сложнее. Для начала я не захотел делать доступ к админке через бд, логин и пас я просто написал в переменные, по этому аккаунт всего один. Сделано это не из-за лени, просто я правда не видел смысла т.к проект не большой и не коммерческий.
Если кто-то будет пользоваться этим справочником то доступ
Адресс админки: домен/panel/admin
login: 'admin',
password: 'wwqe1rws'
Меняется в файле passport.js
Тут перед нами разворачивается 2 кнопки.
Первая - просто добавление кнопок и людей.
Вторая более запутанная для настройки связей и удаления записей.
Первым делом на кнопки Edit вас встретит поиск, при помощи него вы ищите человека с которым хотите делать манипуляции.
Вторая кнопка Assign all. В ней вы настраиваете связи групп кнопок. Т.е в данном случае какие этажи должны быть в отделениях. Тут же и удаляется эта связь.
Следующая кнопка Edit button, тут вы переименовываете кнопки.
Теперь заглянем в кнопку Edit у конкретной записи. Тут можно отредактировать данные либо удалить запись.
Последняя кнопка assign, она предназначена для того, что бы настроить связи у записи.
Для начала обратим внимание на поле link main - тут вы указываете какому отделению принадлежит этот контакт, таких полей 2. В Одном вы можете порвать связь, во втором вы добавляете новую.
В поле link main data вы указываете этаж у связки записей "отделение-контакт". В поле link second вы можете порвать эту связь.
Т.е последовательность добавления такая
На вкладке add добавляем кнопки и записи, идем в edit, жмем Assign all и настраиваем этажи для отделений. Затем ищем запись, жмем assign у нужной и присваиваем ее к отделению, затем указываем на каком этаже внутри этого отделения нужно выводить запись.
Админка получилась запутанная но все же все достаточно просто.
Я понимаю, что скорее всего это Сизифов труд т.к в компаниях редко ведут актуальный справочник но нам понадобился.
В общем я открыт для критики и советам
Код справочника https://github.com/ura2rist/Open-Phone-Book
Так же если есть какие-то вопросы или т.п то можно написать в телегу @urifcof там я тоже сразу окажу поддержку)