instant view
В телеге давно появилась прекрасная штука — инстант-вью. Этот пост будет полон котиков (мне нужно проверить как это всё там будет отображаться). Наслаждайтесь:










Тэ-Зэшница 2.0 ВОЙД!!!11
В телеге давно появилась прекрасная штука — инстант-вью. Этот пост будет полон котиков (мне нужно проверить как это всё там будет отображаться). Наслаждайтесь:
В жопу идею с ивайтами. Зачем напрягать юного падавана, чтоб он вводил какие-то буковки с листочка. Должна быть 1 единственная кнопка в админке у Шефа — «вкл/выкл регистрацию».
Про безопасность всё еще помним. Я включу проверку на «популярные» пароли, вроде «1234» и «password».
Прототип на javascript можно поглядеть вот тут в моем аккаунте на Codepen https://codepen.io/kapu/pen/jRbNMM
Когда-то давным-давно, мне удалось потрудиться на благо родины в качестве десантника-связиста. Тогда я работал с аппаратурой шифрования каналов связи высокой стойкости. Но парадокс — мне это было не интересно. Было понимание механики процесса, и этим, в принципе, всё ограничивалось.
Я знал, что вот у меня в руках ключ, а вот шайтан-коробка, которая без ключа, не даст связать двух слов.
А вот сейчас стало интересно, как-же эта шайтан-коробка устроена.
Ради науки и забавы, я предпринял попытку создать свою Энигму. Вот, посмотрите на результат, пожалуйста.
Я назвал это — Цветошифр. Устроено там всё практически как в настоящей Энигме. У нее было три ротора, а у меня три канала RGB. Собственно, подобрав нужный цвет, вы сможете прочесть секретную надпись.
подсказка: выбирайте черный цвет
Начитавшись умной литературы про обратимое и необратимое шифрование, ко мне пришло понимание, что свой велосипед изобретать в этом деле — плохая затея.
А еще пришло осознание, что я мог целых четыре прекрасных года изучать эти весьма занимательные штуки. А мне было не интересно =( Ох как я был не прав =(
Ну хватит лирики! Зачем это всё в конце концов нужно?
Я создаю не простой бложиг или лендинг, я создаю неужели я сейчачс это скажу вслух — бизнес-приложение.
Самое ценное — информация. Причем абсолютно вся. И моя задача — максимально усложнить жизнь тому парню, который решит этой информацией завладеть.
Первое что необходимо защитить — учетные записи пользователей. Обычно принято хранить в зашифрованном виде только пароли пользователей. Они шифруются быстрыми алгоритмами необратимого шифрования. Я же хочу защитить и остальные данные, алгоритмами обратимого шифрования.
А, забыл вас уведомить — было принято одно очень важное решение. Тэ-Зэшница переехала на новый домен и новый хостинг. Старый не давал поддержки php7. А еще меня жутко бесит старая БД. Тот самый парень который придумал её до меня, хранил всё в windows-1251. А я хочу в utf-8. И я не хочу чтоб вобще существовали поля с названиями типа `ime_maketa` и т. п. Короче — всё с чистого листа.
Создадим таблицу Юзеров со следующими колонками:
Этих данных за глаза хватит для идентификации пользователя. Его персональные данные, мы будем хранить отдельно от котлет, и так или иначе их зашифруем.
Для начала, создадим, собственно Дверь в Тэ-Тэшницу, и настроим авторизацию с регистрацией, и протестируем все это дело на незашифрованных данных. Тоесть пароль мы сразу зашифруем, есейственно. Небудем шифровать пока все остальное.
В целях некомпромитации Двери в Тэ-Зэшницу, я не стану приводить листинг её кода. Обмолвлюсь лишь одним важным для меня событием — я впервые использовал MySQL запрос сложнее обычного SELECT * FROM table WHERE id = ’id’. Впервые использовал JOIN для выборки данных из двух таблиц хD
Она будет не совсем открытой. Мне не хочется, чтоб любой залетный мог зарегится и что-то поглядеть. Регистрация будет по инвайтам.
Как бы это реализовать? Давайте рассуждать!
Раздавать инвайты смогут руководители подразделений. Для этого в их собственном профиле будет нужная кнопка. Нажал — выдало псевдослучайный ключ. Я сначала хотел залупить Хеш какой-нибудь, но потом подумал — а как человек вводить то его будет? Хочу чтоб это было слово, на кириллице, из 5 символов. Наличие инвайтов будем хранить в таблице invites, и после использования будем их оттудова удалять.
Где взять список слов из 5 букв? И желательно не матерных. Пойдем в гугл!
Меня направило в замечательное место, откуда я взял по 10 слов на каждую букву алфавита, и собрал такой вот массив, из которого и будет выбираться ключ.
<?php
$invite_keys = array('Автол', 'Алиби', 'Ангел', 'Архар', 'Адепт', 'Алмаз', 'Апорт', 'Астма', 'Аборт', 'Актер', 'Босой', 'Брысь', 'Булат', 'Бухта', 'Багет', 'Барак', 'Батог', 'Белка', 'Бирюк', 'Бобик', 'Валок', 'Ввысь', 'Веник', 'Вечор', 'Вилка', 'Вкось', 'Вовсе', 'Волос', 'Врать', 'Вчера', 'Грязи', 'Гайка', 'Гетры', 'Гнать', 'Гольф', 'Графа', 'Греча', 'Гудок', 'Гамак', 'Гипюр', 'Давно', 'Декан', 'Динго', 'Домна', 'Драка', 'Дубль', 'Дылда', 'Дверь', 'Дерби', 'Днище', 'Езжай', 'Ехать', 'Егерь', 'Егоза', 'Ездок', 'Есаул', 'Евреи', 'Ездка', 'Ересь', 'Евнух', 'Желоб', 'Жилье', 'Жерло', 'Жокей', 'Жалко', 'Живот', 'Жучка', 'Ждать', 'Жилой', 'Жерех', 'Завет', 'Зайка', 'Запал', 'Затор', 'Зерно', 'Зурна', 'Загиб', 'Закон', 'Запор', 'ЗачетИзвоз', 'Инъяз', 'Игрец', 'Изъян', 'Ислам', 'Исход', 'Иерей', 'Икота', 'Извод', 'Интер', 'Кабан', 'Калан', 'Капля', 'Каток', 'Кивер', 'Класс', 'Кобра', 'Колит', 'Копер', 'Косой', 'Лакей', 'Левый', 'Лесть', 'Линза', 'Ложка', 'Лычки', 'Люпин', 'Ларек', 'Лезть', 'Леший', 'Мадам', 'Маляр', 'Маска', 'Мерка', 'Мидия', 'Мойва', 'Мотор', 'Муфта', 'Мазут', 'Мание', 'Набок', 'Нажиг', 'Намыв', 'Начет', 'Несть', 'Нищий', 'Нынче', 'Навет', 'Назло', 'Нарез', 'Оплот', 'Орлан', 'Отбой', 'Откуп', 'Отчий', 'Образ', 'Овощь', 'Океан', 'Олово', 'Оптик', 'Пакет', 'Пария', 'Пачка', 'Персы', 'Пикап', 'Пласт', 'Побег', 'Пойло', 'Полоз', 'Порка', 'Рампа', 'Рдеть', 'Рента', 'Родич', 'Рояль', 'Русло', 'Рябой', 'Расти', 'Редут', 'Реять', 'Ссора', 'Столб', 'Судак', 'Сухой', 'Сырье', 'Салон', 'Сауна', 'Свора', 'Секач', 'Сеять', 'Такой', 'Тафта', 'Тенек', 'Титан', 'Топор', 'Трель', 'Тузик', 'Тыква', 'Талон', 'Твист', 'Угорь', 'Улика', 'Успех', 'Учхоз', 'Уесть', 'Умный', 'Утеря', 'Ушной', 'Уазик', 'Узник', 'Фугас', 'Фасад', 'Филей', 'Флокс', 'Фурор', 'Фенил', 'Финал', 'Форма', 'Франт', 'Фазис', 'Ханжа', 'Хлябь', 'Хорей', 'Херес', 'Ходок', 'Хохот', 'Халат', 'Хинди', 'Холст', 'Хурма', 'Цевье', 'Цибик', 'Цифра', 'Цевка', 'Цыпки', 'Цепка', 'Цитра', 'Цвето', 'Цыпка', 'Центр', 'Чабан', 'Чадра', 'Через', 'Чохом', 'Чулок', 'Чарка', 'Четки', 'Чтить', 'Чутье', 'Чекан', 'Шалый', 'Шашни', 'Шитый', 'Шмель', 'Штамп', 'Шутка', 'Шарах', 'Шелом', 'Шишак', 'Шофер', 'Щекот', 'Щетка', 'Щучий', 'Щегол', 'Щепка', 'Щиток', 'Щенок', 'Щипцы', 'Щелок', 'Щипок', 'Эвены', 'Энный', 'Эстет', 'Эмаль', 'Эскиз', 'Элита', 'Эркер', 'Экран', 'Эрзац', 'Этнос', 'Юниор', 'Юркий', 'Юлить', 'Юрист', 'Юкола', 'Юноша', 'Юдоль', 'Юннат', 'Юнкер', 'Ямина', 'Ясень', 'Ягода', 'Якуты', 'Ярыга', 'Ягель', 'Яхонт', 'Якорь', 'Ярлык', 'Явный');
$random_key = rand(0, count($invite_keys)-1);
$invite_key = $invite_keys[$random_key];
echo $invite_key;
?>
Из клиента мы будем обращаться сюда Аяксом, и в случае, если руководитель не передумал, записывать ключ и руководителя в таблицу инвайтов.
Я, пожалуй, пока-что запишу себе один инвайт в базу руками. Для проверки работоспособности происходящего.
Прежде чем дополнять старые таблицы, нужно додумать до конца концепцию хранения и, что не мало важно, извлечения, информации.
Все кубики, из которых собирается Тэ-Зэ — должны иметь обдуманную, понятную, расширяемую структуру.
Начнем по-порядку:
Тэ-Зэ начинается с данных клиента. Этот момент разобрали ранее: отдельно храним организации, отдельно персонажей. Из этих компонентов, в последствии, собирается карточка организации. Делая разного рода выборки, можно будет отобразить разнообразную аналитику.
Далее — суть Тэ-Зэ — материалы, и что с ними делать, чтоб получилось то, что хочет клиент.
Получается, что второй кубик — не так прост. Он сам состоит из своих маленьких кубиков.
К примеру: материал «Баннер литой (Европа) 440 гр./м²» — Имеет, кроме категории «Рулонных материалов», под-категории «Литые баннеры», свойства «граммаж», свойсва «цена за м²» и проч., еще и некоторые связи с табличкой Услуги (которую, мы пока еще не создали).
Сейчас я предприму попытку перечислить возможные услуги, и прокомментирую категории материалов, к которым они применимы:
Пока хватит.
Комбинируя материалы и услуги, мы можем создавать продукты.
Допустим табличку мы можем собрать тремя разными способами (и это не предел):
Используя эти строительные блоки, мы будем генерировать инфо-текст для кейсов, а также будем использовать этот подход, для создания шаблонов Тэ-Зэ для типовых конструкций.
От сюда хорошо видно, что каждая услуга, применима к своему перечню материалов. Где-то к целой группе материалов, а где-то с ограничениями.
Более того, есть не очевидные моменты: скажем сразу — у каждой услуги, есть стоимость, и вот у люверсов, стоимостей ровно столько, сколько этих люверсов существует в природе диаметром.
Есть еще более не очевидные вещи — есть взаимоисключаемые услуги. Например, мы не можем пробить люверсы, по стороне баннера, на которой изготовлен карман — в карман тогда просто труба не войдет. Но относительно одного заказа, эти услуги можно применить обе. Бить люверсы и клеить карманы на разные стороны баннера.
А ламинация бывает двусторонней.
И ламинировать можно всеми материалами из категории «пленки с клеем».
Прикатка, тоже бывает двусторонней.
А усиление краев бывает двойным и тройным и еще в добавок с реп-шнуром ?
А еще продуктом может оказаться Объемная буква, тут может быть миллион комбинаций кубиков, где взаимоисключающих друг-друга два миллиона.
Следующий кубик Тэ-Зэ — Менеджер.
Почему-бы, не дать возможность Старшему менеджеру, или Руководству, написать Тэ-Зэ, и делегировать задачу другому менеджеру?
Ну или вот, заказали Пете, вчера, баннер. Он принял заказ, всё там провел, Тэ-Зэ запустил, и в отпуск лыжи намылил. И чего делать? Правильно — делегировать!
В сегодняшней ситуации, такой заказ остается виден производству и Старшему менеджеру. То-есть, автоматом, не в чем не повинный Старший менеджер, резко приобретает дополнительную головную боль.
А раз мы об этом подумали, то неплохо бы предусмотреть логирование цепочки делегирований.
Далее — Даты
Даты, имеют свойства: срываться, переноситься, уточняться, отсутствовать вовсе, и прочее. Это не шутки, это жизнь =/
Даты будем хранить как есть, и логировать в случае изменений. Наверное даже комментарии какие-то задумаем, для оправданий ;))
Чем мельче мы разберем на компоненты Тэ-Зэшку, тем гибче сможем проводить аналитику. Но увлекаться и перегибать не стоит. Всё в рамках разумного.
В следующем посте, мы модернизируем существующую форму Тэ-Зэ на печать, подгрузив в выпадающий список материалов — материалы из БД.
Да-да, сейчас оно прямо в хтмле прописано О__О
В нашей замечательной табличке zakazi есть следующие колонки:
Сейчас я попытаюсь вывести информацию из базы (17898 строк) в сгруппированном по Фирмам виде.
Затем вручную очищу от фейков, и заведу их в базу Организаций.
создам файл omg.php такого содержания:
<?php
$query = $mysqli->query("SELECT `ime`, `firma`,`tel`, `email` FROM `zakazi` GROUP BY `firma`");
echo '<table>';
while($rows = $query->fetch_array()){
echo '<tr>
<td>'.$rows[firma].'</td>
<td>'.$rows[ime].'</td>
<td>'.$rows[tel].'</td>
<td>'.$rows[email].'</td>
</tr>';
};
echo '</table>';
?>
Запустил скрипт, он вывел мне 2423 строки.
Копирую их в Excel и провожу ручную зачистку от фейков.
Excel как ничто другое подходит для таких мероприятий. В нем предостаточно мощного инструмента для поиска, сортировок и прочих манипуляций с большим количеством данных.
Некоторые менеджеры (да и сам я так делал) указывали либо свой емейл, либо что-то вроде 1@1.ru, вместо телефона — цифру 1. И тп.
Опустим тот момент, почему так происходит, просто остановимся на том, что такие данные мы загружать в базу не будем.
Немножко цифр из зачистки, ну так, забавы ради:
Я предпочитаю не делать себе мозги с импортом в CSV. Хожу на этот Замечательный ресурс
С клиентами и организациями, покончено, ура.
Тут не намного сложнее. У меня есть прайс лист в Экселевском виде. Приведем его в нужный вид, и через уже знакомый Mr. Data Converter запихнем в базу.
Первичные данные добавлены. Теперь к сложному — дополнение уже имеющихся таблиц. Об этом — следующий пост.
Начнем, пожалуй, с самого простого: создания новых табличек, для:
Перед непосредственным созданием, давайте определимся, какую информацию они будут хранить.
В них мы соберем информацию, которая дублируется в каждой отдельной Тэ-Зэшке.
Кейс будет хранить:
В представлении кейса будет показано 6 пунктов, из 8. Первый и седьмой, нужны под капотом. Этой информаци, более чем достаточно, для быстрого анализа положения своих заказов в производственной цепочке на данный момент. Для более глубокого анализа — можно будет тыкнуть в кейс мышкой, и тут уже ЭВМ покажет, на какой стадии находится каждый отдельный элемент кейса — сколько пленки отпечатано, сколько накатано, сколько баннеров на обработке и проч.
Тут будет 2 таблицы. Для организаций, и их сотрудников.
Так сложилось, что в одной организации, может работать от 1 до 100500 сотрудников, и с кем именно мы контактируем по данному заказу — нужно знать.
1. Категория — material_category:
— Пенокартон — material_foam_carton
4. Комметарий — material_comment(не всем сходу понятно что это такое) пример для примера выше:
Таблички готовы. Теперь их необходимо заполнить первичными данными. Об этом — следующий пост.
Эта заметка коснется только внешнего вида двери в кузницу ТэЗэшек.
Форма логина, сейчас, выглядит так:
А форма регистрации, вот так:
Я заменил логотип компании на логотип ТэЗэшницы. Слово ТэЗэшница — я придумал вчера, раньше у этой системы не было названия. Теперь есть. Я доволен.
Перед тем как вы преступите к захвату мирового господства, вершению великих дел, или к женитьбе —
Умные люди, не раз ходившие тропами разработки различных програмых продуктов, настоятельно рекомендуют составить план, и желательно раньше, чем вы приметесь к самой разработке. Я склонен верить умным людям. Вперед!
Сперва-сначала, мы посмотрим на то что у нас есть. Разберемся с какими вещами ТэЗэшница справляется, а с какими нет. Пройдем по каждой кнопочке и окошку, пофантазируем, поразмышляем, и обрисуем задачи на карте разработки.
Судя по дате самого первого ТэЗэ в БД (MySQL), а это январь 2014 года, при разработке ТэЗэшницы 1.0, использовались возможности php 5.4. На дворе сентябрь 2018 года, и мы будем использовать возможности php 7.0
Взглянем на то, что собственно система аккумулирует в базе, я приведу SQL запрос INSERT ко всем столбцам таблицы zakazi , чтоб вы воочию узрели весь лютый кошмар, там происходящий:
INSERT INTO `zakazi`(`nomer`, `ime`, `data_zakaza`, `firma`, `tel`, `email`, `web`, `ime_maketa`, `pechatni`, `material`, `material1`, `razreshenie`, `dlina`, `visota`, `kol`, `S`, `provarka`, `prokleyka`, `lyvers`, `karman`, `obrezka`, `laminaciy`, `vid`, `data_sdachi`, `data_dostavki`, `primechanie`, `edit`, `zametka`, `manager`, `otchet`, `Dir`, `Ruk`, `Pech`, `Ruk1`, `otcha1`, `otcha2`, `votch`, `vdir`, `vruk`, `vpech`, `vruk1`, `votch1`, `votch2`, `edit1`, `kosyk`, `brak`, `apolo`, `polka`) VALUES ([...])
Да, я тоже немножк опешил, когда первый раз увидел, в первую очередь, от подхода к неймингу, он противоречит всему что я изучал, в частности — правилам хорошего кода.
Что хранится в первых столбцах, я примерно понимаю, а вот в столбцах начиная с `otchet` — тут без поллитра не разберешься.
Стратегически-полезной информации сохраняется откровенно мало, и сохраняется немножко не так:
Мне необходимо внедрить ТэЗэшницу 2.0, сохранив при этом возможность хоть как-то анализировать старые задачи.
Что будем делать с базой?
Я, как печатник, хочу отмечать с какими профилями и настройками станка, будет печататься тот или иной заказ. Это даст прямое представление о скорости выполнения этого заказа. В разных режимах печати — разные скорости, и они известны, я хочу использовать эту информацию. Так-же это люто сэкономит мое время, когда придет чувак, печатавший у нас постер 3 года назад, и скажет: «- Вот новый макет, но сделайте плз чтоб вот тут зеленый был таким-же зеленым как и здесь».
Мы имеем две формы. Когда-то была одна (на первом скрине). Вторая появилась 2 года назад, моими силами. Сейчас будет отступление к истории предприятия, его внутренней организации.
Когда-то, на производстве, было 2 печатных станка, и всё. С ТэЗэшками на печать эта форма худо-бедно справлялась. Но позже появился лазер и режущий плоттер. Потом еще пара печатных станков. Потом фреза.
С ТэЗэшками на фрезеровку и лазер она не справлялась, из-за организации БД. С задачами для макетчиков не справлялась по той же причине. ТэЗэшки макетчикам печатаются на бумаге, и передаются в руки. Для контроля исполнения задачи приходится ходить своим пешком в макетку.
Теперь оно кое-как контролируется. Всё так-же печатается на бумаге, но ходит и проверяет теперь только начальник производства, и ставит галочки во второй таблице.
Так сложилось исторически. Так сложилось от криворукости. От такого уклада у всех волосы дыбом. Я хочу объединить и формы, и таблицы в одну, хочу облагородить внешне, и принести дзен вовнутрь.
Хочу чтоб когда менеджер напечатал первые две буквы фамилии клиента, форма предложила варианты в автоподстановку, о которых уже знает.
Хочу, чтоб менеджер мог просто перетащить макет в форму, и она сама заполнила те поля, которые смогла прочитать.
Хочу чтоб форма подсказала менеджеру, что материала на производстве может не хватить на этот заказ, что нужно его докупить.
Хочу, чтоб она подсказала стоимость заказа.
Хочу чтоб менеджер мог иметь черновики. Чтоб мог пользоваться шаблонами для часто-одинаковых заказов. Хочу, чтоб менеджер не страдал, а работал быстро и эффективно.
Форма может помочь перестать делать двойную работу, и должна это делать.
Я их показывал прошлым постом, но взгляните, пожалуйста, на них еще раз:
Здесь нужно переделать абсолютно всё.
Я хочу иметь возможность сортировать задачи по материалам, по пособработке, по срокам сдачи, по клиентам, по менеджерам, скрывать отпечатанное, порезанное, заламинированное. Хочу отмечать профиля и настройки станка. Хочу отмечать на каком рулоне распакованного материала я напечатал это, а на каком вот это. Для чего? Чтоб понимать, сколько погонных метров в рулоне осталось.
Сейчас расскажу, как приблизительно прикинуть, сколько еще материала в рулоне:
Нужно посчитать «годовые кольца» и умножить на 30 сантиметров. Я устал так делать.
Хочу, чтоб менеджер мог развидеть поля, которые ему не хочется видеть, а в случае чего, увидеть снова. Чтоб перестал ломать глаза.
Для менеджмента, я намерен кардинально изменить представление задач. Я внесу, такую сущность, как кейсы.
Это будут такие папочки, внутри коротых будут лежать заказы от одного клиента, на настоящий момент времени.
Сейчас каждый макет — отдельное тз. В базе мы это так и оставим. Вот к примеру, у нас есть заказ от условного ООО «Рога и копыта», они хотят 3 баннера, и 5 постеров. Производству мы покажем их отдельными строками. Но менеджеру будем показывать кейс, внутри которого эти 8 строк будут сгруппированы, и опрятно отображены. Без вырвиглазности. Для глубоких раскопок внутри кейса — его можно будет развернуть, и посмотреть — скорректировать.
Нет никакой системы управления юзерами, группами и тд. Вся админская работа ведется врукопашную, напрямую в бд и в коде.
Создадим эту самую одминку!
Хочется мобильную версию.
Ну, вроде бы, общий план ясен.
Ой, совсем забыл о входе и регистрации. Там-ведь тоже конь не валялся
Начну я, пожалуй, с него. Об этом — следующий пост.
Привет %username%!
Я должен сразу признаться, что сварщик я не настоящий, а только учусь.
И учиться я намерен, примерно, следующему:
У нас есть приложеньице, написанное в далеком 2014 году, неизвестным мне, ненастоящим сварщиком. Оно призвано облегчить страдания менеджмента на рекламном производстве, и доносить до производства что им сегодня делать. Это ТэЗэшница. Я своими силами, и кривыми руками, немножко её обновлял, допиливал под себя, немножко под менеджеров, но то что сейчас мы имеем — ужасно и неподдерживаемо.
В неподдерживаемости продукта, частично виновен Я, частично устаревшие технологии, и капельку тот чувак, который сотворил продукт 4 с половиной года назад.
По роду своей деятельности, на этом самом рекламном производстве, мне приходится пользоваться этой ТэЗэшницой, ежеминутно. И я, признаться, от этого страдаю. Она выполняет свои задачи, не совсем в том обьеме, в котором задумано.
Чем рассказывать, я лучше вам покажу. Вот, смотрите, пожалуйста:
Вот так её вижу Я. Помните, я сказал, что допиливал её под себя, а капельку для менеджмента? Я не шутил про капельку, а говорил серьезно, смотрите как её видят менеджеры:
Несмотря на не самый маленький монитор (1600х900 пикселей) мне пришлось уменьшить сайт на 175% чтоб заскриншотить это всё целиком.
В один прекрасный момент (год назад), я устал ломать глаза, и объединил для себя столбцы с пособработкой в один. Устав перепутывать количество отпечатков с площадью (например нужен 1 баннер 1х3 метра, площадь 3 квадрата, оно написано рядом, и нехер делать напечатать баннер трижды, поглядев замыленным взглядом не в тот столбец), раскрасил красным кол-во, если оно больше чем 1. Ну и еще мелочи всякие, типа как — шапку прибил, не уходит вврех при скроле. Но для менеджмента, повторить тоже самое, не дошли руки.
Архитектура на данный момент такова, что для каждой группы юзеров (печатники, начальники, манагеры, макетчики, дизигнеры), показываются поля общей таблицы, нужные только им. Но как это сделано? В лоб
if(user_prava == 1){
портянка хтмла и пхп;
} else if(user_prava == 2){
еще портянка;
}
То-есть — шаблона нет, для каждого юзер-гроупа нужно переписывать отдельно всё. И я, если честно, боюсь об этом думать.
Но настало время добрых дел. Пора принести радость и легкость бытия к менеджерам и производству!
ТэЗэшница 2.0 ВОЙД!!!11