LS Google Wave
Google Wave — компьютерная платформа, призванная соединить в себе электронную почту, мгновенную передачу сообщений, Вики и социальную организацию сети с сильным совместным центром. Запуск программы намечен на конец 2009 года.
Однако, частично предоставлен доступ к функционалу данной платформы.
В данной статье описывается механизм добавления Google волн в создаваемые пользователями Вашего блога топики.
Добавление волн в комментарии запрещены.
Шаг 1:
Добавляем в файл /templates/skin/new/js/panel.js после функцию putWaveID.
Находим в файле код:
и после добавляем
Шаг 2:
в файле /classes/modules/sys_text/Text.class.php
Модифицируем строку
на
разрешая тег <wave>.
Отключаем типографирование для этого тега. Для этого после строки
добавляем строку
Создаем функцию WaveParser обработки тега. Для этого после функции
добавляем
Далее. Заменяем функцию
на
Шаг 3:
в файле /classes/actions/ActionBlog.class.php
в каждой из функций EventShowTopicPersonal(),EventShowTopic() после строки
добавляем
Внедрение в движок закончено.
Шаг 4:
В файле /templates/skin/new/actions/ActionTopic/add.tpl
после строки
добавляем
И в файле /templates/skin/new/header.tpl
перед закрывающимся тегом </head>
добавляем
UPD: Со сменой API обновил блок с java кодом.
меняем строку
на
Шаг 5 последний:
сохраняем картинки бара и кнопку добавления волны в каталог с шаблоном.
Это первая модификация, да и опыт, выходящий за рамки работы с шаблонами движка LiveStreet.
Комментария, критика, ваши мысли и идеи принимаются.
Пример можно посмотреть тут
UPD1: Для тех, у кого нет пока аккаунта — ниже приведен скриншот с вложенной в топик волной
Однако, частично предоставлен доступ к функционалу данной платформы.
В данной статье описывается механизм добавления Google волн в создаваемые пользователями Вашего блога топики.
Добавление волн в комментарии запрещены.
Шаг 1:
Добавляем в файл /templates/skin/new/js/panel.js после функцию putWaveID.
Находим в файле код:
putTagUrl: function(obj,sPromt) {
obj=$(obj);
if (url=prompt(sPromt,'http://')) {
var sel=obj.getSelectedText();
this.putText(obj,'<a href="'+url+'">'+sel+'</a>');
}
},
и после добавляем
putWaveID: function(obj,sPromt) {
obj=$(obj);
if (waveid=prompt(sPromt,'')) {
var sel=obj.getSelectedText();
this.putText(obj,'<wave>'+waveid+'</wave>');
}
},
Шаг 2:
в файле /classes/modules/sys_text/Text.class.php
Модифицируем строку
$this->oJevix->cfgAllowTags(array('cut','a', 'img', 'i', 'b', 'u', 's','video',
на
$this->oJevix->cfgAllowTags(array('cut','a', 'img', 'i', 'b', 'u', 's', 'wave','video',
разрешая тег <wave>.
Отключаем типографирование для этого тега. Для этого после строки
$this->oJevix->cfgSetTagNoTypography('video');
добавляем строку
$this->oJevix->cfgSetTagNoTypography('wave');
Создаем функцию WaveParser обработки тега. Для этого после функции
public function VideoParser($sText) {
/**
* youtube.com
*/
...
return $sText;
}
добавляем
public function WaveParser($sText) {
/**
* format WaveID domainname.com!w+abcd_ABC123%A
*/
$sText = preg_replace('/<wave>([a-zA-Z0-9\.!+\%_\-]+)<\/wave>/Ui', '<div id="waveframe" style="width: 100%; height: 100%"><img src="/templates/skin/new/images/
google-wave.jpg" alt="WaveID: \'$1\'"></div>', $sText);
return $sText;
}
Далее. Заменяем функцию
public function Parser($sText) {
$sResult=$this->FlashParamParser($sText);
$sResult=$this->JevixParser($sResult);
$sResult=$this->VideoParser($sResult);
// $sResult=$this->GeshiParser($sResult);
$sResult=$this->CodeSourceParser($sResult);
if (BLOG_URL_NO_INDEX) {
$sResult=$this->MakeUrlNoIndex($sResult);
}
return $sResult;
}
на
public function Parser($sText) {
$sResult=$this->FlashParamParser($sText);
$sResult=$this->JevixParser($sResult);
$sResult=$this->VideoParser($sResult);
$sResult=$this->WaveParser($sResult);
// $sResult=$this->GeshiParser($sResult);
$sResult=$this->CodeSourceParser($sResult);
if (BLOG_URL_NO_INDEX) {
$sResult=$this->MakeUrlNoIndex($sResult);
}
return $sResult;
}
Шаг 3:
в файле /classes/actions/ActionBlog.class.php
в каждой из функций EventShowTopicPersonal(),EventShowTopic() после строки
$this->Viewer_SetHtmlDescription(func_text_words($sTextSeo,20));
добавляем
if (preg_match('/<wave>([a-zA-Z0-9\.!+\%_\-]+)<\/wave>/Ui', $oTopic->getTextSource(), $sWave)) {
$this->Viewer_Assign('sWave',$sWave[1]);
}
Внедрение в движок закончено.
Шаг 4:
В файле /templates/skin/new/actions/ActionTopic/add.tpl
после строки
<a href="#" onclick="showImgUploadForm(); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/img.g
if" width="20" height="20" title="{$aLang.panel_image}"></a>
добавляем
<a href="#" onclick="lsPanel.putWaveID('topic_text','WAVE ID'); return false;" class="button"><img src="{$DIR_STATIC_SK
IN}/images/panel/wave-embed.gif" width="20" height="20" title="Google Wave"></a>
И в файле /templates/skin/new/header.tpl
перед закрывающимся тегом </head>
добавляем
{if $sWave}
{literal}
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://www.google.com/webelements/js/wave.js"></script>
<script type="text/javascript">
function initialize() {
google.load("wave", "1");
var waveframe = document.getElementById("waveframe");
var embedOptions = {
target: waveframe,
header: true,
toolbar: true,
footer: true
};
var wavePanel = new google.wave.WavePanel(embedOptions);
wavePanel.loadWave("{/literal}{$sWave}{literal}");
}
</script>
{/literal}
{/if}
UPD: Со сменой API обновил блок с java кодом.
меняем строку
<body onload="prettyPrint();">
на
<body onload="prettyPrint(){if $sWave} ;initialize();{/if}">
Шаг 5 последний:
сохраняем картинки бара и кнопку добавления волны в каталог с шаблоном.
Это первая модификация, да и опыт, выходящий за рамки работы с шаблонами движка LiveStreet.
Комментария, критика, ваши мысли и идеи принимаются.
Пример можно посмотреть тут
UPD1: Для тех, у кого нет пока аккаунта — ниже приведен скриншот с вложенной в топик волной
15 комментариев
Кроме этого идет разработка альтернативного
pygowave так и не заводится со вчерашнего вечера.
А ранее не могу даже волну создать, выдавало ошибки =\
Волны с
Так же могут быть проблемы из браузеров, отличных от Chrome, FireFox 3+ Safari3+
Быть может, люди правы, революция и все такое — но я пока скептически к этому отношусь.
ps спасибо за первые интеграции автору топика!
К сожалению аккаунта нет пока и я не могу оценить что дает использование текущего варианта интеграции.
В данной статье я привел механизм встраивания (
Но кроме встраивания разработчик предлагает еще два дополнения, одним из которых являются роботы.
Роботы представляют собой автоматизированных участников волны Google Wave, исходный код которых находится на стороне сервера. Они могут выполнять задачи за пользователей, в том числе синхронизировать данные с другими службами. На данный момент роботы размещены на Google App Engine и для работы с ними мы предоставляем клиентские библиотеки на языках Java и Python. Также мы заняты разработкой более низкоуровневых API-методов, которые бы позволили создавать роботов на любом веб-сервере. Для иллюстрации возможностей мы сделали робота с ласковым именем Tweety, с его помощью вы сможете без проблем обращаться к Twitter из волны Google Wave.
Взято от
А это означает, что ничего не мешает произвести аналогичного рода интеграцию и с LS.