Pull to refresh

WEBO Site InSight — объединяя CMS

Reading time5 min
Views601
WEBO Site InSight%username, доброго тебя дня/ночи/утра/что там еще бывает :) Спешу сообщить о безумно классной новости: теперь разработка расширений сразу под множество CMS стала на порядки легче. Если по-русски, то расширение для Joomla! теперь можно установить на WordPress, Bitrix, Drupal, или что-еще-у-вас-на-сайте-используется. И наоборот.

Но это слишком здорово, для того чтобы быть правдой, правда? :) Подробности под катом.

Дальше много букв, но загрузить это чудо-расширение можно прямо отсюда (размер порядка 100 Кб). В комплекте кроме самой платформы — 4 виджета для измерения клиентской и серверной скорости загрузки, объема потребляемой памяти и свободного места на диске. Расширение доступно пока только для Joomla! и WordPress (системные требования).

Введение


Все началось еще этой весной на РИФ, где появилась идея создать CMS-независимую платформу для веб-разработки, чтобы легко экспортировать-импортировать расширения, и значительно увеличить число качественных плагинов к CMS (за счет повторного использования качественного кода). Это все должен был обеспечить проект Katmandoo (финалист еще одного конкурса — Russian Startup Challenge), но его реализация была отложена до лучших времен.

Чтобы не дать пропасть такой замечательной идеи, наша команда собралась немного с силами и реализовала (пока только малую) часть заложенного функционала. Ею стало общее API для работы с базой данных и наиболее используемым функционалом систем, на базе которого можно очень просто создавать достаточно сложные расширения. Платформа, которая все это реализовывает, получила название WEBO Site InSight.

WEBO Site InSight


Что сейчас есть? На данный момент это скорее альфа-версия продукта, который позволяет реализовывать некоторый произвольный (ограниченный существущим API) функционал для всех поддерживаемых систем. Систем этих тоже не очень много — пока только две WordPress и Joomla!, но охватить еще 5-7 популярных труда не составляет, ибо есть большой опыт наработок для них.

Продукт представляет собой несколько уровней API: системное API для использования внутри самого расширения, обертка API к базе данных в CMS и API для подключения к наиболее стандартным событиям CMS (onStart / onBeforeEnd / др). API небогатое, но уже сейчас позволяет собирать и выводить достаточно интересные данные об исследуемой системе. В частности, потребление процессорного времени и клиентскую скорость загрузки.

Да, все расширения (виджеты) для WEBO Site InSight пишутся единообразно для всех систем (т.е. сейчас по факту для Joomla! и WordPress разницы в коде самих виджетов никакой нет), API немного описано в Wiki здесь и здесь, его мы обязательно будем расширять, а документацию дополнять. Пока это все в режиме рабочей альфа-версии.

Пример плагина


Дабы не травить душу, привожу сразу пример кода, который обеспечивает полную функциональность небольшого виджета. Виджет выводит объем потребляемой памяти при создании страницы сайта.
<?php
class SiteInSightWidgetRAMUsage {
	var $friendlyName = 'RAM Usage';
	var $group = 1;
	function SiteInSightWidgetRAMUsage() {}
	function onActivate($WSI) {
		return array(
			'dataStructure' => array(
				'ram' => array(
					'type' => 'int',
					'key' => true
				)
			)
		);
	}
	function onView($WSI) {
		$data = $WSI->getWidgetData();
		$average = 0;
		$total = 0;
		foreach ($data as $k => $v) {
			$average += $v['ram'];
			$total++;
		}
		$average /= ($total ? $total : 1);
		$average = round(100 * $average / 1024 / 1024) / 100 . ' Mb';
		return array('short' => $average, 'detailed' => $average);
	}
	function onBeforeEnd($WSI, $content) {
		$WSI->storeWidgetData(array('ram' => @memory_get_usage()));
		return $content;
	}
}

Что виджет делает: при своей активации (onActivate) создает таблицу в базе данных для сбора значений. Далее перед окончанием обработки страницы (onBeforeEnd) записывает текущее потребление памяти. В администраторском интерфейсе (onView) выводятся собранные данные (пока в виде среднего значения потребления памяти за день).

Суть виджета проста, но и кода безумно мало. Для более сложных примеров, скорее всего, потребуется расширение API, но пока основная функция WEBO Site InSight — собирать статическую информацию о текущем сайте.

Идеология


Как уже было заявлено чуть выше, произвольный функции пока кросс-платформенно не поддерживаются. И цели такой не ставилось. Мы создавали только аналитический инструмент для исследования производительности / качества сайта. Который можно было бы максимально легко переносить с сайта на сайт. И который был бы бесплатным.

Да, основная идея — это свободное программное обеспечение. Весь код платформы и текущих виджетов выпущен под лицензией GPLv3, т.е. его можно использовать, фактически, везде (как минимум, на уже поддерживаемых WordPress и Joomla!). Никаких ограничений да использование платформы не накладывается (и не будет наложено).

Интерфейс


Мы, видимо, слишком долго обсуждали сам концепт платформы и будущий интерфейс, что в итоге не смогли прийти к финальному мнению. Сейчас реализована малая часть функционала (в частности, нет детальных графиков для собираемой статистики, это добавим в первую очередь), но все это выглядит достаточно аккуратно.

Внешний вид продукта после установки (4 текущих виджета с возможностью их активации, виджета автоматически устанавливаются из папки продукта)


Внешний вид продукта со всеми установленными виджетами (информации не так много, но данных собирается сейчас гораздо больше, и дело за малым — их только вывести).


Также уже прямо сейчас можно свернуть все виджеты в одном блоке в просто статусную строку (сделано на будущее, когда как виджетов, так и группирующих блоков может быть большое количество).


Планы и предложения


Сейчас мы планируем
  1. добавить поддержку всех знакомых нам систем (Drupal 6, Bitrix, NetCat, CS-Cart, Magento) с тем же самым функционалом,
  2. добавить вывод графиков / дополнительной информации, за основу возьмем Raphaёl, все будет примерно следующим образом
  3. добавить настройки для виджетов (чтобы можно было собирать какие-то конкретные данные или выставить реквизиты доступа к стороннему API, например).
  4. добавить механизм установки виджетов (пока только копировать папки вручную, либо добавлять в сборку),
  5. локализация, и еще 1000+ других фич.

Продукт полностью Open Source (GPLv3, и даже если будет меняться, то только в области OSI-совместимых), поэтому мы приглашаем всех желающих как к открытому тестированию и созданию виджетов на основе платформы, так и доработке самой платформы и расширении ее на менее популярные CMS (но которые вы, может быть, используете каждый день). Нужны как серверные (для ядра платформы), так и клиентские (для интерфейса) программисты.

Да, естественно, нам очень важно ваше мнение и обратная связь от сообщества веб-разработчиков.

Ссылка на проект на Google Code: code.google.com/p/webo-site-insight
Документация там: code.google.com/p/webo-site-insight/w/list
Загрузить code.google.com/p/webo-site-insight/downloads/list
В том числе, API для виджетов code.google.com/p/webo-site-insight/wiki/WEBOSiteInSightAPI
API для БД code.google.com/p/webo-site-insight/wiki/WEBOSiteInSightDBAPI
Tags:
Hubs:
+22
Comments26

Articles

Change theme settings