Редакция
Техзадание
Я размещу прогу как она есть, ко всеобщему удовольствию и вящей славе автора, но, если автор сделает прогу по тому техзаданию, что приведено ниже (сам хотел было делать), то он ДЕЙСТВИТЕЛЬНО может зарабатывать на ней очень неплохо.
-------------------------------------------------
Программа должна быть построена таким образом, чтобы человек, ничего не понимающий в ХТМЛ мог создавать, размещать и рекламировать свои тумбинал-галереи (далее ТГ).
(Это просто программа-максимум. Я внезапно стал с уважением относиться к Биллу Г. с его методикой драг-энд-дроп. Это оптимально для обезьян, т.е. для тех, кто НЕ ПОНИМАЕТ что физически происходит при, например, перетаскивании пиктограммы файла в "корзину")
Он должен иметь комплект фоток и комплект тумбинашек к ним (ориентировочно с названиями типа photo#####.jpg и tumb####.jpg), расположенных в каталогах content и preview. Дополнительно существуют каталоги buttons и banners.
(Надо сказать, что это ИСХОДНЫЕ каталоги. На выходе программа должна создавать "дерево каталогов" примерно следующего вида:
content
preview
buttons
banners
patterns
galleries
Year2000
February
01-01-2000
Gallery01
файлы галереи 01 - ХТМЛы, фотки, превьюхи, кнопки и баннеры,
копии содержимого исходных каталогов
Gallery02
файлы галереи 02
Программа должна при отсутствии нужного каталога генерировать его, опираясь на текущую дату и номер последней галереи)
Работа программы делится на несколько частей
(То есть, одна из менюшек -- выбор типа работ, по изменению типа меняются вкладки в основном окне программы)
- управление БД
- формирование БД по пользователю
- имя
- комплект имен
(Один пользователь может иметь до десятка ников и мэйлов, все представлено в виде: выпадающего меню с никами, поля ввода нового ника, кнопок "добавить", "удалить", "установить по умолчанию". Можно еще предусмотреть соотнесение пар ник/мэйл, но это не обязательно)
- емэйл
- комплект емэйлов
- формирование БД по галереям
(Т.к. галерей может быть тысяча, надо реализовать выбор галерей из стандартного виндового диалога "Open", при получении ее дискового адреса ищется строка в базе. То есть, наличествует кнопка "Выбрать галерею". Предусматривается обработка ошибки, если галерея была переименована извне.)
- адрес галереи на диске
- адрес галереи на хосте
- дата создания (и аплоада) галереи
- список элементов галереи
- тумбинашки
- кнопки ТГП
- баннеры
- текстовые ссылки
- тексты (заголовок, описания и пр.)
- счетчики
- иллюстрации (логотип и пр.)
- список ТГП, в которых галерея была отрекламирована
(Все перечисленное генерируется прогой по завершению соответствующих операций (создания, аплоада, сабмиттинга) и представлено в виде простого потока текста или списка в текстовом окне с прокруткой. Не редактируется пользователем.)
- прочие заметки пользователя
(Второе текстовое окно с прокруткой. Туда можно вводить текст, стирать ранее написанное. При снятии фокуса ввода с окна, содержимое запоминается в базе.)
- формирование БД по ТГП
(Новая вкладка)
- адрес ТГП
- адрес сабмит-страницы ТГП
(Однострочные поля для ввода с описанным выше принципом запоминания. При отсутствии во вводимом префикса http:// он добавляется. Две кнопки, напрямую открывающие эти адреса в броузере)
- дата внесения ТГП в базу
(Ставит сама текущую дату, но допускается редактирование в рамках шаблона)
- дата последней проверки ТГП на изменения на сабмит-странице
(Кнопка "Check TGP". При нажатии получает дату последней модификации сабмит-страницы ТГП и сравнивает с датой внесения/посл.проверки. При отличии отправляет разработчикам мылом уведомление о необходимости выложить на сайт обновление базы и предупреждает пользователя о несоответствии дат.)
- перечень явных полей для заполнения в сабмит-форме
- возможно что-то еще
(Возможно, ничего и не надо. Даже скорее всего, что ничего не надо. Данные по ТГП пользователь берет с нашего сайта и сам не вводит. Вводим мы за отдельную плату. Содержание файла с базой ТГП -- отдельная большая песня, пока скажу только, что он текстовый и напоминает ini-файл)
- прочие заметки пользователя
(См. выше)
- формирование БД по спонсорам
(Новая вкладка. Вот тут юзер все вводит сам. Поэтому все поля -- активные.)
- название спонсора
(Пусть пишет, что хочет)
- адрес сайта спонсора
(Берет из адресной строки броузера. Рядом -- кнопка "Открыть сайт")
- код рекламы спонсора
(Многострочное поле ввода. Вносит из письма или вставляет с сайта)
- адрес баннера спонсора на диске
(Поле ввода и кнопка "Brouse" для прямого нахождения баннера. Хорошо бы иметь возможность видеть маленькую превьюшку баннера рядом.)
- прочие заметки пользователя
(Ну, это аналогично. Заметь, что после внесения всех данных и нажатия на кнопку "Add", содержимое полей добавляется в базу, и название спонсора появляется в выпадающем меню в самом верху. Выбираешь в нем строку -- все поля заполняются. Есть и кнопка "Del". Подразумевается, что к-во спонсоров может быть большим, но не чрезмерно. 64 и при превышении выскакивает алерт.)
- формирование БД по хостам
(Новая вкладка)
- название хоста
- адрес хоста
(Или его IP. Есть кнопки "Add", "Del", "Open")
- логин и пароль доступа
(Как по WWW, так и по FTP. То есть две пары.)
- изготовление галереи
(Вообще работа с шаблоном видится мне так: в таблице из 3 столбцов и 10 строк размещены одинаковые вып.менюшки с перечнем возможных элементов, и надо просто выбирать, что именно будет стоять на этом месте. Менюшки включают в себя:
а) Строка из трех тумбинашек;
б) Баннер;
в) Кнопка ТГП;
г) Произвольная иллюстрация;
д) Произвольный текст с сылкой или без;
е) Гориз.линия
При выборе любой строчки выскакивает окошко для ввода доп.информации, например, для "а" -- это имя файла тумбинашки, текст ALT, толщина рамки. Для баннера или кнопки ТГП -- это имя файла и линк (для баннера можно указывать весь блок кода) и пр. Для баннеров и кнопок надо иметь возможность выбирать их из списка, который формируется на основе БД. Для тумбинашек и иллюстраций -- стандартный диалог "Open" с возможностью предпросмотра)
- изготовление шаблона или выбор готового шаблона
или выбор готовой галереи для редактирования
(То есть, выбор типа открытия. При разных типах лишь меняется начальные значения в "менюшках элементов". При изготовлении -- везде стоит "Select element", при выборе готового шаблона -- названия элементов без конкретных значений, при редактировании -- названия элементов со значениями. )
- изготовление (редактирование) шаблона
(Шаблон берется по номеру из списка, не более 20. Галерея на редактирование берется из каталога.)
- выбор будущих элементов шаблона
(То есть, идет работа с менюшками. Один за другим заполняются поля.)
- размещение их по некоей модульной сетке
(Это уже излишне, они и так в ней.)
- просмотр в броузере с исп. "образцовых" элементов
(В любой момент можно нажать кнопку "View in brouser". Те ячейки, где уже выбор произведен, отображаются как положено, а где еще нулевые значения -- там вставляются просто цветные прямоугольники со словами "BANNER", "PIC" и пр. Прога быстро сохраняет темпоральный файл и открывает его в браузере)
- сохранение шаблона и внесение его в список
(То есть, одно и то же можно сохранить и как шаблон, и как галерею. При сохранении в виде шаблона вместо имен файлов вставляются некие строки, типа [pic], вместо линков -- [link] и пр. По ним программа ориентируется, что выставлять в менюшках при открытии потом этого шаблона. Шаблон вносится в перечень шаблонов и сохраняется в каталоге "patterns" в виде ХТМЛ-файла.
При сохранении же как галереи, прога не переписывает поверх старой галереи новую, а добавляет в дерево каталогов новую папку Gallery## в соответствующий день и заносит туда и ХТМЛ, и все выбранные элементы.)
- выбор готового шаблона из списка
(Ну, это понятно...)
- выбор элементов будущей галереи
(То есть, когда шаблон или галерея открыты для редактирования, что описано выше, то можно делать то, что описано ниже ;-))
- превьюшки
- случайным образом
(По теории, это имеет смысл делать только в том случае, если они все однотипны, иначе будет mix-галерея. Но эта возможность -- единственная для автоматического создания галерей.)
- по диапазону (напр. от 135 до 187 фотки)
(Думаю, можно не реализовывать)
- выборочно из списка
(Обычное дело для ручного редактирования.)
- баннеры
(Баннер, как и любой другой элемент выбирается в типовом ниспадающем меню, выбрал -- тут же появляется панелька с уточняющими полями выбора)
- выбор спонсора из списка
(Это уже на панельке. То есть, последовательность выбора: баннер вообще -> конкретный спонсор -> конкретный баннер спонсора)
- выбор баннера из списка
(См. предыдущее. Все это берется из соотв. БД)
- кнопки ТГП
- выбор ТГП из списка
(Аналогично как для баннеров. Однако подразумевается, что на одну ТГП -- одна кнопка и один код к ней)
- ввод текстов
(Если выбрал в менюшке, что в этом месте страницы должен быть некий текст, например "Next gallery", то выпадает панелька с уточняющими полями: сам текст, линк к нему и размер букв текста)
- выбор счетчиков (ввод готового кода)
(Думаю, можно и без счетчиков. А можно и с ними...)
- выбор иллюстраций (если заданы в шаблоне)
(Уточняющие поля: имя файла, надпись ALT, линк, бордер)
- предпросмотр галереи в броузере
(Это я уже объяснял, просмотр темпорального файла. Элементы пишутся тоже в директорию TEMP и после удаляются.)
- повторное редактирование при необходимости
(То есть, мы редактирование и не заканчивали)
- выбор категории галереи
(Это важно. Какая получится. То есть, вверху все время есть выпад. меню "категория", т.е. аматеур, матуре и пр. Потом, по сохранении окончательного варианта галереи, категория вносится в БД.)
- генерация окончательного варианта галереи
(Заключительный предпросмотр. Конечно, остановиться мы могли в любой момент...)
- запись
(Никаких "Save as...". Имя и каталог генерируются автоматом.)
- галереи и ее элементов на диск с созданием дерева каталогов
(Все, что в галерею вошло копируется в новый каталог.)
- информации о галерее в БД галерей
(Ну, и инфа соответственно. Все одной кнопкой. Если мы уже сохраняли промежуточный вариант в ходе сессии, то нужен вопрос "Перезаписать поверх старой?")
- размещение галереи
(Самое для меня тугое место...)
- выбор целевого хоста пользователем
(Это уже новая вкладка. Выпадающее меню со списком внесенных в базу хостов. выбираем один и жмем "Аплоад". Понятно, что заведение аккаунта было проведено юзером заранее и вручную.)
- соединение с хостом
(Ход коннекта как-то иллюстрируется. Сообщения об отдельных операциях, что ли?..)
- по ФТП
(Только по ФТП. Не по ФТП -- как-то несолидно...)
- по "файл-менеджеру" хоста
(необязательно)
- заливка галереи и ее элементов на хост с созданием на хосте дерева каталогов
(Не надо никаких деревьев. Все имена уникальны и наложения могут быть только в фотках. В таком случае, фотка не обновляется, а используется уже залитая.)
- возможность реконнекта и возобновления заливки с места обрыва
(Ну, по возможности...)
- ведение лога заливки, расчет времени заливки
(С этим просто.)
- возможность реконнекта и возобновления заливки с места обрыва
(Если у них плохой дуал-ап -- это их, а не наша проблема. Пусть линию тянут.)
- внесение информации о заливке в БД галереи
(По окончании заливки.)
- рекламирование галереи
(Это самое важное, но необходимое)
- получение информации о пользователе и галерее из соотв. БД
- внесение информации в поля сабмит-формы программы
- имя пользователя (выбор из списка)
- мэйл пользователя (выбор из списка)
(Или установленные по умолчанию.)
- адрес галереи на хосте
- адрес "кнопки ТГП" на хосте
- категория галереи
(Помнишь, вводили выше?)
- описание галереи
(Э-э-э... А ведь тоже надо было где-то вводить...)
- заголовок (название) галереи
(Если ручками вводили -- одно. А при автомате?! Надо придумать некий генератор описаний из 3-4 слов...)
- количество фоток в галерее
(Подсчитывается)
- необязательные поля (5-6 шт)
(Есть такие ТГП, которые спрашивают всякую дрянь, типа номера аккаунта или реферера наводчика, или комментария... Надо как-то вводить это заранее в БД конкретно для этой ТГП и потом вставлять, когда автоматом...)
- отправка этих данных в использованные на галерее ТГП в формате именно этих ТГП
(То есть, надо реализовать метод POST и вызов некоего cgi со строкой параметров. Ответ скрипта может появляться в окне броузера. А может игнорироваться.)
- возможность отправки данных в любые ТГП по выбору пользователя
(Имеются в виду ТГП, не требующие обратного линка. Надо как-то иметь возможность отмечать в списке ТГП нужные и иметь строчку "во все", и отправлять данные соответственно меткам.)
- получение ответов от ТГП (в окне броузера или необязательно)
- ведение лога рекламирования
- занесение информации о рекламировании в БД галереи
(Отправили данные -- поставили метку в БД.)
- управление галереей
- возможность открытия в окне броузера любой галереи из списка
(Это уже реализовано выше, в БД галерей есть кнопка "Open")
- возможность стирания файлов на хосте
(Вот это необязательно.)
- update данных по программе
(Придется сайт иметь!-)
- получение обновленных данных по ТГП с сайта разработчика
То есть, в проге есть кнопка "Апдейт" и она появляется только при регистрации проги. Или сиди без данных по ТГП...)
- проверка лицензионности программы
(См. выше)
(Дополнения. При создании галереи должна быть возможность выбирать цвета фона, текста и линков. Все параметры должны иметь возможность устанавливаться как дефаултные. Это надо для автосоздания галерей. Кроме имен файлов картинок, конечно...)
Теперь рассмотрим, что происходит при автоматической работе.
Прога запускается и нажимается кнопка "Авто". Прога берет шаблон по умолчанию, вставляет на заданные места баннеры по умолчанию, кнопки ТГП по умолчанию, ничего не показывает, записывает на диск и соединяется с хостом. Заливает на хост по умолчанию галерею и элементы, и рекламирует в ТГП, установленных по умолчанию. Отключается. При попытке повторно проделать то же, сообщает, что надо поменять ТГП, меняем -- проделывает поцесс. Или может сама менять, в случайном порядке. Как и хосты, как и спонсоров. Это как уж выставишь в параметрах, случайно, или по запросу.
-------------------------------------------------
Если что непонятно -- свяжись со мной, объясню.