Документация по блоголёту
18.03.2010Несмотря на объявление стабильной версии, до сих пор находятся мелкие баги и вносятся изменения. Например планируется подправить инсталлятор - в нем будут новые страницы первой формы установки и приветствия после успешной инсталляции. Также необходимо как то доделать виджет мета - все никак не приму решение, так как каждый из вариантов мне не нравится, а красивого так и не придумывается. Но пост то я озаглавил - документация. О ней и пойдет речь.
Для полноценного запуска сайтов litepublisher.ru(.com) по мимо тикет системы (которая требует отдельного тестирования), я планирую выложить на страницах весь исходный код пблоголёта. Для сырцов я пока решил использовать посты - заголовок (title) как раз и будет именем файла, а контент - контент этого файла. Прикрутил для этого подсветку синтаксиса на javascript. Почему посты? К ним можно оставлять комменты, но вопрос - нужны ли вообще комменты для сырцов для меня не ясен. Предположу, что уже написана и работает подсистема сырцов. Перейду опять к документации.
Документ будет расширенным постом, в котором указано имя файла, имя родителя (тоже не понятно то ли id то ли текст указывать, если id, то нужен комбобокс, а его делать мне не хочется). Также список дочерних классов. Родители дочерние классы должны быть обязательно с линками. В блоголёте есть уже класс отлично справляющийся со списком названий - метки (они же рубрики). Нет проблем, чтобы добавить еще один класс - имена классов, так сказать метки , в которых только имена файлов. Минус метки - то, что она метка, а не пост, и соответственно метку нельзя комментировать, и метка содержит в себе посты. То есть необходимо не промежуточное звено между постами в в виде меток, а необходимо связать посты между собой непосредственно. Как это сделать? В блоголёте сейчас отсутствует подобный класс или механизм. Сформулирую задачу - необходимо свойство у поста, в котором перечислены id других постов. Это свойство должно конвертироваться, в общем случае, в html ссылок на посты -как я уже и писал подобие меток. Ок, задача поставлена, а значит она будет реализована. Поскольку я вроде как объявил о стабилизации версии, то эту функциональность придется вынести за рамки существующего движка, а говоря по русски - реализовать в плагине. И так, предположу, что такое свойство реализовано.
Для документа еще необходимо указать исходник, а по простому проставить линк на пост с исходником (об этом писал чуть выше). Собственно, задача сводится как раз к списку связанных постов - в списке будет всего один пост с файлом Также следует в документе про класс указать по мимо родственных отношений, интерфейсов, также и зависимости - классы которые зависят от описываемого, а также от каких классов этот класс зависит, ну а по простому - кто кого использует.. Тоже получаются перекрестные ссылки друг на друга. Так что в свойстве списка постов появляется все больше потребности.
далее документ состоит из трех частей - методы (публичные и защищенные, приватные не нужно указывать в документации), свойства (а также уровень доступа к ним - только чтение, только запись, оба), события, а также короткий пример php кода, использующий этот класс. На названия методов, свойств и событий можно навесить метки - у некоторых классов совпадают имена, но особой пользы в этом не будет. Тут скорее нужна общая коллекция всех имеющихся в движке методов, свойств и событий. Типа список постов в лайт режиме, когда на одной странице выводился бы перечень всех этих составляющих. Как это сделать мне пока не понятно. Чтобы были ссылки необходимо существование специального урла, а генерировать урл для каждой мелкой сущности нет никакого смысла - описание метода или свойства может и не занимать целой строки. Необходима коллекция внутристраничных ссылок с возможностью автоматического их размещения в других местах. Вот даже сейчас придумал - список классов, а возле имени класса аяксовые ссылки на методы., свойства и события, по которым погружается (раскрывается - не обязательно подгружать) соответствующий список. Этот список должен автоматически генерироваться. Необходима новая сущность - внутристраничные ссылки в посте, разделенные по типам (в моем случае будет 3 типа: методы, свойства и события). И так требуется еще одна новая сущность. Подумаю как быть с ней.
Чтобы упорядочить все внутристраничные ссылки их необходимо каким либо образом собрать. Вариант с парсингом html я не принимаю, так как на мой взгляд необходимо более простое средство. Иными словами требуется язык для описания документа. Если не язык, то формочка в админки с кучей полей редактирования. лирическое отступление: подумалось, что хорошо бы в описании методов и свойств поставить линки на исходник, но не вообще на пост с исходником, а именно на внутристраничную ссылку с исходником конкретного метода. Вопрос о ручном проставлении подобных ссылок даже не рассматривается. необходимо автоматическое средство проставления подобных ссылок. Также еще одно лирическое: и вообще хорошо бы свернуть текст исходника до названий методов класса. По клику на названии появлялся бы его исходник. Сворачивание должно быть после загрузки страницы, чтобы полный текст файла был доступен для индексирования поисковиками. Следовательно необходим несложный парсер сырцов. Предположу, что такой парсер сделал (это не сложно по фразе например public function вычленить начало метода и по количеству фигурных скобок { } найти конец метода. Ну тогда встает вопрос о целесообразности использования синтаксической подсветки на базе javascript - тогда надо будет и синтаксическую подсветку делать средствами php.
Предварительный вывод - система документации получается гораздо сложнее, чем предполагалось. Сложнее тикет системы.
← Ранее Интегрированный видеоплеер
Позже Wiki слова в посте →
Комментарии (18) на запись “Документация по блоголёту”
Оставить комментарий
Это все очень интересно. Но.
Один велосипед уже изобретен. Если считать тикет-систему, то велосипедов два. Так может быть просто взять любую вики и сделать на ней документацию? Зачем тратить силы на не совсем сформировавшуюся идею? Может быть лучше потратить их на сам движок?
А вики можно очень удобно выбрать на http://www.wikimatrix.org/wizard.php
Нет, я, конечно, не против встроенной вики (назовем это так) и поддерживаю развитие функциональности блоголета. Но еще раз повторю: вики для документации — идеальный вариант.
Сейчас сущностей три. А если понадобится десять? В вики это легко решается вики-словами и иерархией. Плюс есть история изменения для содержания. Что тоже идеально для поддержки разных редакций исходников, например. Рекомендую подумать все-таки над необходимостью своей системы доментации.
Следует все же разделиить котлет от мух: на сегодня например есть репозиторий на гугле:
http://litepublisher.googlecode.com/svn/trunk
В котором есть все исходники с трасировкой каждого чиха (делаю коммит проекта по 10 раз на дню). Там же на ггле есть и тикет система и вики и все остальное. Но вот писать хорошую документацию... Собствено спасибо за наводку - планирую сейчас скачать несколько вики движков (я вообще что то забыл об их существовании во вселенной), и посмотрю что, да как там уних. Но мой скромный опыт говорит следующее: если хочешь что то качественное, то как прравило приходится делать самому. Более чем вероятно, что заимсттвую некоторые идеии из вики. Например тикет систему я написал за один день, правда готовился к этому написанию намного дольше. На мой взгляд это показывает гибкостьи возможности блоголёта - думаю, что такие задачи на wordpress было бы реализовать почти невозможно, либо большой кровью. Есть симметричнное предположение насчет вики - написать мне ее будет несложно, просто еще в мыслях нет однозначного понимания, что конкретно нужно. Спост как раз был об этом - порассуждатьвслух, что нужно, и прикинуть как это делать. Не факт, что существующие движки вики смогут решить поставленные мной задачи в этом посте именно в ттаком виде, как споставлена задача, а не тем способом, которым предлагают движки. Надеюсь внятно обяснил свою позицию
Обращение ко всем. Посоветуйте какой-нибудь приличный бесплатный FTP-менеджер с возможностью расстановки прав доступа рекурсивно. А то у меня несколько хостингов, и ни один не предоставляет Shell-доступ. Приходится сначала скачивать архив на рабочий стол, а потом заливать на хостинг, где вручную расставлять атрибуты, ибо встроенный менеджер файлов рекурсивной функции тоже не имеет.
Вопрос лично Владимиру. Есть какие-нибудь подвижки относительно резервирования и восстановления базы данных? При тестировании у в ас на хостинге эта функция работает?
Про резирвирование - сегодня уже не успею, завтрау меня день рождения, послезавтра болеть буду, так что в понедельник займусь, так как для тестов необходимо будет ставить на сервер, ведь на локал хосте все работает.
Про ftp - как раз сегодня думал кроме .tar.gz файла включить в дистрибутив bat файл, который позволитьбезо вссяких сторонних ftp кклиентов, с помощью имеющегося в Windows клиента закачать все файлы на сервер и там же расставить необходимые права. Выглядеть будет даже примитивно - запускаешь батник и он делает через командную строку дос все необходимое. Вот пример такого файла (тест конечно)
user login password
binary
cd mydomain.com
put index.php
quit
Каждый решает по своему эту задачу - покупают платные инструменты, пишут свои собственные скрипты. Посоветовать ничего не могу, ну кроме пары строк создания поста:
$post = tpost::instance();
$post->title = "Заголовок поста";
$post->content = "Текст поста, то бишь статья";
$post->posted = strtotime("+ 3 day");
$posts = tposts::instance();
$posts->add($post);
вот такой скрипт создаст пост с датой через 3 дня
Лично я для таких целей приобрёл программу Зеброид. Убойная штука. Бесплатного аналога с таким же богатым функционалом не нашёл. Ближайшие конкуренты: TextKit и WordPress Translator, но на них тоже придётся раскошеливаться.
В принципе, когда сайтов не так много, можно и с классическим блог-клиентом работать, а вот когда масштабы растут, требуется иное программное решение.