Как стать автором
Обновить

Меняем меню: расширения волнового клиента

Время на прочтение 4 мин
Количество просмотров 455



Как известно, в Google Wave можно использовать два типа расширений (extensions) — гаджеты и роботы. Напомню: 
Гаджет — небольшая программка, которая выполняется на стороне клиента, принадлежит определенной волне и позволяет ее участникам взаимодействовать между собой, поскольку они все могут менять статус гаджета и одновременно видят эти изменения. Наглядный пример — гаджет голосования. Вы проголосовали «за» или «против», гаджет учел ваш голос и изменил таблицу результатов. Все участники волны, в которую внедрен данный гаджет, увидели это изменение.
Робот — исполняется на стороне сервера. Можно даже сказать «на стороне серверов», поскольку сейчас роботы размещаются «в облаках», на серверах Google AppEngine. Робот — равноправный участник волны. Так же, как люди, он имеет доступ к содержанию волны, может его изменять, добавлять или удалять участников данной волны, а также создавать новые «блипы» (реплики в обсуждении) и новые волны.

Возникает вопрос, а как добавлять роботов или гаджеты в волну? Поскольку роботы — это полноценные участники волны, то их можно добавлять точно так же, как и людей. Заносите адрес робота в свою адресную книгу, а потом оттуда по мере необходимости подключаете робота к нужной волне. Гаджет вставляется с помощью специального пункта в меню «Debug» (мы сейчас говорим о волновом клиенте, который используется в «песочнице» Google Wave Sandbox — wavesandbox.com).

Однако со временем понимаешь, что этот процесс нужно сделать более гибким. Часто приходится подключать сразу несколько роботов к волне. Или нужно вставить какой-то собственный гаджет, которого нет в общедоступной библиотеке (или, как правильно, «гаджетнице»? :). Для решения этих вопросов мы имеем в данное время простой механизм расширения интерфейса волнового клиента. С его помощью мы можем добавлять дополнительные кнопки в меню редактирования блипа и в меню создания новой волны. Вот как это выглядит.

Задача 1. Вы написали (или откопали где-то код) удобный гаджет. Часто и с удовольствием вставляете его в волну. Но вам не хочется постоянно лезть в меню «Debug» и добавлять строку с адресом гаджета. Хорошо бы иметь просто кнопку, которая будет вставлять нужный гаджет по мановению вашего пальца.

Создаете «манифест», т.е. XML-файл с таким примерно текстом: 
<extension location="Toolbar">
   <info text="Are You In?"
         description="Click to insert the Are You In? gadget."
         imageUrl="http://wave-api.appspot.com/public/gadgets/areyouin/icon.png"/>
   <insertGadget url="http://wave-api.appspot.com/public/gadgets/areyouin/gadget.xml"/>
 </extension>


Затем создаете новую волну, идете в меню «Debug >Add Extension Installer» и там указываете адрес, где лежит ваш «манифест».

Сохраняете волну (кнопка «Done»). В ней появляется изображение элемента из «пазлов» с названием вашего гаджета, надписью «Автор неизвестен» и кнопкой «Install». Ее и нажимаем. 

Все, теперь в вашем меню редактирования «блипа» появляется новая кнопка, которая вставляет ваш гаджет куда пожелаете. (Гусары, молчать! :) На моем скриншоте вы видите добавленную кнопку с сине-белым логотипом facebook'а.

Примечание: Структура «манифеста», как видим, очень проста. Location указывает место, куда будет добавлена кнопка (сейчас допустимо два варианта — Toolbar и NewWaveMenu, о котором чуть ниже). Info text — пояснение. Description — более подробное описание гаджета. ImageUrl — расположение картинки для кнопки. InsertGadget url — соответственно, местоположение xml-файла вашего гаджета. Можете попробовать с  демо-гаджетом, который лежит здесь - http://wave-api-dmo.appspot.com/public/simplemap/whereareyou.xml

Задача 2. Вы продались роботам, частенько выкрикиваете во сне «Слава роботам! Смерть человекам!» и в любую волну добавляете с десяток любимых ботов. Правильно, Твитти нужна? Нужна, кто ж сообщит последние сплетни из твиттера. Рози нужна? Нужна, кто ж будет переводить их с разных языков. «Иветта, Мюзетта, Жанетта...»
Хочется иметь возможность одним нажатием добавлять нужный гарем роботов (ну, и людей заодно, конечно) к волне.

Создаем другой манифест:
<extension location="NewWaveMenu">
   <info text="New Twave"
         description="Creates a new Twitter wave."/>
   <createNewWave>
   <participant id="tweety-wave@appspot.com"></participant>
   </createNewWave>
</extension>


Точно так же открываем новую волну, затем идем в меню «Debug >Add Extension Installer» и там указываем адрес, где в сети лежит этот «манифест». Оп! И в панели рядом с кнопкой «New Wave» появляется кнопка со стрелкой вниз, которая при нажатии на нее показывает выпадающее меню с добавленными вами пунктами. 

Примечание: Как видим, тут изменилась Location, а также появилась возможность создавать волну (createNewWave) и добавлять в нее участников (participant). 

Пока, насколько мне известно, еще нет способа таким же образом добавлять участников в существующую волну или удалять их оттуда. Но API будет со временем расширяться и улучшаться. И если эти ожидания сбудутся, то у нас с вами появится возможность подстраивать свою рабочую среду в волнах сообразно нашим персональным вкусам и предпочтениям. 
Или создавать «клоны» волнового клиента, заточенные под определенный круг задач (IM, совместное редактирование текстов, дискуссионное или игровое сообщество и т.п.). 
Или под умения и привычки пользователей (хм, «1С-волна» для бухгалтерии, это наверное было бы круто, да! :).

Материал из группы «Google Wave Россия»
Опубликовано также в блоге «Google Wave по-русски»
Теги:
Хабы:
+21
Комментарии 17
Комментарии Комментарии 17

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн