Реализую модерацию комментариев прямо в посте на аяксе и стал вопрос о упорядочивании данных передаваемых между сервером и клиентом. Чтобы взаимодействие вообще было возможно необходимо для клиента указать как минимум адреса,по которым следует обращаться к серверу. Сейчас эта инфа не упорядочена, а именно для виджетов один адрес, для модерации это второй адрес. А для модерации также надо указать id поста. А чтобы виджеты могли загрузить контент надо знать (иными словами упрямо указать) id html тега, куда вставляется полученный html. Проще говоря необходимо заполнить несколько глобальных переменных на java script соответствующими значениями. Можно значительно увеличить список параметров - id меню для всплывающего меню. Эти значения зависят от текущей темы. Без поддержки аякса или всплывающего меню это не имеет значение. Но поскольку такая поддержка является обязательной, то необходимо написать соответствующий код на java script..

Хорошо, что я начал писать этот пост - половину эти параметров может найти парсер темы и автоматически сделать соответствующую вставку в секции head, которая изначально отсутствует в теме. Например:


<script type="text/javascript">
var idmenu = "nav";
var tagmenu = "li";
</script>

Эта вставка нужна будет для всплывающего меню,, для того чтобы скрипт смог найти меню на готовой html странице. Также я уже писал про виджеты и модерацию комментов. Объявлять большое количество глобальных переменных всегда плохо - есть вероятность пересечения имен переменных с посторонними скриптами в будущем. Хорошим вариантом было бы инкапсулировать все эти данные в объект, например options.idmenu, options.url - получается почти симметрия с аналогичными объектами в блоголёте. Абстрактно можно было бы расширить взаимодействия до экспорта/импорта объектов между клиентом и сервером, то бишь между браузером и сайтом, так как уже не понятно где конкретно блоголёт - на сервере или клиенте. Следует сразу поставить границу - для меня клиентское развитие блоголёта является тупиковой ветвью. Но как задел на будущее сделаю себе заметку. Наверно для части задач было бы интересным запросить на java объект с сервера и внутри java управлять состоянием объекта на сервере. И эта задача решаема - в блоголёте предусмотрен шлюз для полного доступа ко всем объектам через xmlrpc. Клиент может быть как и Windows приложением (а ля блогклиент), java скриптом в браузере или php скриптом на другом сервере. Оставлю эти очень интересные вопросы на будущее.

Проведу аналогию между xmlrpc и ajax. Наверно существуют библиотеки для аякса с поддержкой xmlrpc - я этим не занимался. Основное различие - это способ авторизации, а конкретно - в целях безопасности очевидно, что ни в коем случае нельзя прямо в java скриптах указывать логин/пароль. Авторизация возможна по кукам - их браузер нормально передает, в отличии от дайджест авторизации. Поскольку уже существуют апи xmlrpc для доступа, то встает вопрос - зачем ддублировать код для аякса и xmlrpc? Может быть сразу все перевести на одни рельсы xmlrpc? То есть чтобы аякс не общался с сервером через обычные get/post запросы а генерировал и парсил xmlrpc запросы? Собственно получается непрогнозируемый в начале поста вопрос.

xmlrpc в блоголёте удобен тем, что есть как бы один сервер, куда остальные классы добавляют свои методы ,и этим классам вовсе нет никакого дела до xmlrpc - это обычные php функции. Так что сейчас я поищу симметричные решения для java script. Так что релиз новой версии в очередной раз затягивается...