Карты Google Maps в топике

2
Немного про новую фичу в XText версии 0.0.3 — тег gmap

gmap — позволяет вставлять в топики/страницы/переписку/комментарии и прочее карты Google Maps со списком точек

для того чтобы открыть мастер создания карты, надо тыкнуть в иконку глобуса на панели , после чего вы увидите окно мастера


«Заголовок карты» — жирная надпись над картой
«Поиск адреса» — строка для ввода адреса, который надо найти на карте
левое поле под «Поиск адреса» — результаты поиска, там выводится список найденных вариантов
правое поле под «Поиск адреса» — точки, которые мы хотим оставить на карте
— перенести точку из результатов поиска в точки карты
— удалить точку из списка
— поставить точку на карте курсором мыши

После нажатия на кнопку «Вставить» мы получим код следующего вида:
<gmap title="красная площадь в москве" type="hybrid" zoom="16" center="55.7545299;37.6198406">55.7542159;37.6200123;красная площадь</gmap>


А сама карта после сохранения топика будет выглядеть так:


OpenStreetMap

Слой OSM появился в версии xtext 0.0.5rc4, узрите:
livestreet карта osm openstreetmap
  • 0
  • 28 августа 2010, 20:05
  • 1d10t

Решил перековырять немного ядро

5
Мои нововведения:
  • Хуки вокруг инициализации модулей _before и _after за счет методов InitModule
  • Переработанный __autoload
  • Получение информации о классе методом GetClassInfo вплоть до пути к класс-файлу

Плюсы
  • Никаких более регулярок для парсинга имени класса в других скриптах, всё в одном месте
  • Нет более вилок в коде по поводу регистра в именах классов и методов. Везде учитывается регистр (собственно, чем нам грозит php6, насколько я помню)
  • Стандартные хуки вокруг инициализации модулей — это просто прекрасно, я считаю, мне часто нужны были
  • func_list_plugins() — замена куче дублирующегося кода
  • Переработанный __autoload автоматом инклюдит все возможные классы, имена которых описаны по правилам ядра.

Сырцы
engine/classes/Engine.class.php raw
engine/modules/hook/Hook.class.php raw

func_list_plugins() (поместить в engine/include/function.php)
function func_list_plugins($bAll = false){
	$sPluginsDir = Config::Get('path.root.server').'/plugins';
	$sPluginsListFile = $sPluginsDir.'/plugins.dat';
	$aPlugin = array();
	if($bAll){
		$aPluginRaw = array();
		$aPaths = glob("$aPluginRaw/*", GLOB_ONLYDIR);
		if($aPaths)
		foreach($aPaths as $sPath){
			$aPluginRaw[] = basename($sPath);
		}
	}else{
		$aPluginRaw = @array_map('trim', file($sPluginsListFile));
	}
	if($aPluginRaw)
	foreach($aPluginRaw as $sPlugin){
		$sPluginXML = "$sPluginsDir/$sPlugin/plugin.xml";
		if(is_file($sPluginXML)){
			$aPlugin[] = $sPlugin;
		}
	}
	return $aPlugin;
	
}


Давайте потестим и обсудим, насколько всё это полезно?

зыж. модифицированное ядро отлично работает на моей тестовой площадке livestreet.ochecho.ru/
  • 0
  • 13 августа 2010, 15:27
  • 1d10t

Способ искоренить Config::Set в конфигах плагинов

1
Задача: при выполнении ветви конфига через include исключить изменение текущего конфига

сделал у себя так:
Index: Config.class.php
===================================================================
--- Config.class.php	(revision 50)
+++ Config.class.php	(revision 119)
@@ -271,9 +271,25 @@
 	 */
 	static public function Set($sKey,$value,$sInstance=self::DEFAULT_CONFIG_INSTANCE) {
 		$aKeys=explode('.',$sKey);
+		
+		if(isset($value['$root$']) && is_array($value['$root$'])){
+			$aRoot = $value['$root$'];
+			unset($value['$root$']);
+			foreach($aRoot as $sRk => $mRv){
+				self::Set(
+					$sRk,
+					self::isExist($sRk)
+						? func_array_merge_assoc(Config::Get($sRk, $sInstance), $mRv)
+						: $mRv
+					,
+					$sInstance
+				);
+			}
+		}
+		
 		$sEval='self::getInstance($sInstance)->aConfig';
 		foreach ($aKeys as $sK) {
-			$sEval.='['.var_export($sK, true).']';
+			$sEval.='['.var_export((string)$sK, true).']';
 		}
 		$sEval.='=$value;';
 		eval($sEval);	


теперь чтобы получить доступ к корню глобального конфига из конфига плагина, надо просто добавить префикс "$root$"

например, для того чтобы сказать роутеру о новом экшне, вместо не православного Config::Set в конфиге плагина page можно написать православное
$config['$root$']['router']['page']['page']	= 'PluginPage_ActionPage';
  • 0
  • 08 августа 2010, 12:50
  • 1d10t

Печать топика

3
Давайте посоветуемся, кто как видит функцию печати топика

есть 3 пути:
1. создаем кастомный стиль для media=print, скрывающий всё лишнее (всё кроме заголовка топика и его текста), и вставляем простой линк в каждом топике
a href="javascript: window.print()"

при этом можно сохранить нативные стили для содержимого топика

2. делаем специальный экшн с минималистичным шаблоном для топика и открываем по ссылке его в новом окне, у которого onload = window.print()

3. побаловался вчера немного и придумал еще один дурацкий метод, но очень быстрый. создаем новое окно динамически:

<script>
function printtopic(index){
 var title = $$('.topic .title')[index].get('text');
 var content = $$('.topic .content')[index].get('html');
 var win = window.open();
 win.onload = function (){ setTimeout('window.print()',2000);};
 var windoc = win.document;
 windoc.write(new Element('div').adopt(new Element('h1', {'text':title}), new Element('div', {'html':content})).get('html'));
}
</script>


ссылка для печати:
<a href="javascript:printtopic(0)">печать</a>
  • 0
  • 08 августа 2010, 12:36
  • 1d10t

Релиз плагина "XText"

14
XText, livestreet, рисовалка, граффити

Что такое плагин XText?


Средство разработки обработчиков специальных тегов, сводящее разработку к простому процедурному программированию.

Обработка специального тега возможна на одной из двух стадий:
  • при получении текстового свойства Entity
  • при обработке методом Text_Parse

Средство расширения функционала стандартной панели lspanel:
  • добавление кнопок на панель
  • вывод кнопок на выбранных панелях (топик, комментарий, страница, личное сообщение)
  • простое описание модальных окон для кнопок

0.0.2
  • [hack] совместимось с aceadminpanel (buggy code)
  • [fix] не выключалась обработка спец.тега через конфиг
  • [fix] удален лишний вызов обработки спойлеров в audio.js
  • [fix] совместимость с другими парсерами (spoiler). спасибо ort'у

0.0.3 для livestreet rev. 985 и старше
кому не хочется обновляться до девелоперской ревизии — могут подождать релиза 0.4.3 ;)
  • [fix] улучшена совместимость с другими парсерами
  • [add] рисовалка теперь поддерживает отмену и повтор шагов через меню правой кнопки мыши
  • [add] добавлен тег gmap — вставка карт Google Maps со списком точек chekhovcc.ru/tag/gmap/
  • [add] замена стандартного ajax-метода textPreview для обработки javascript-составляющей некоторых тегов (spoiler, gmap)
  • [fix] обновление Swiff.Uploader для нового флеш-плеера, не работали remote-методы (используется при заливке аудио-файлов у тега audio)
  • [fix] тег video: зафиксил вставку vkontakte и vimeo
  • [add] добавлено автоматическое выполнение javascript-функции вида xtext_popup_tag_show_after() сразу после отображения модального окна
  • [fix] изменено расположение файлов тегов. РЕКОМЕНДУЕТСЯ УДАЛИТЬ СТАРЫЙ ПЛАГИН И ЗАЛИТЬ НОВЫЙ
  • [fix] изменен файл конфигурации
  • [add] поддержка шаблона developer «из коробки»

0.0.3 для livestreet release 0.4.2
  • [add/fix] поддержка официального релиза 0.4.2. версия для скачивания "0.0.3 / ls 0.4.2 release compat"

0.0.4
  • [fix] исправлена ошибка обработки тегов уровня Entity (появилось в 0.0.3)
  • [change] на уровень Entity переведены теги: gmap, audio, user
  • [add] обновлена документация
  • [fix] поправлен конфиг



Читать дальше

Замутил рисовалку для XText ;)

1
Воевал с ActionScript 3.0 три дня и три ночи!
Теперь покупатели модуля XText получат супер-бонус — РИСОВАЛКУ!!!
рисовалка для livestreet

зы. как всегда, постестить можно на chekhovcc.ru
она значком палитры обозначена в панельке комментов и топика ;)
  • +3
  • 25 июля 2010, 01:38
  • 1d10t

Pipe! Import - Импорт RSS

8
Готовится к продаже новый плагин «Pipe! Import» для LiveStreet 0.4.1/0.4.2

Что делает

Импортирует RSS-ленты и любой другой контент, обработанный через yahoo pipes (далее трубы).

Какие фичи

  • Импорт из множественных труб
  • Для каждой трубы собственные настройки:
    • Шаблон, по которому строится топик

    • Автор — от какого пользователя создается пост
    • Принудительное выставление топика на главную (как чекбокс у админа при создании/редактировании топика)
    • Отправка топика в черновики (может понадобиться для последующего рерайтинга)
    • Флаг запрета комментариев
    • Принудительное понижение рейтинга топика ниже порога вывода на главную
    • Блог — в какой блог постим топик
    • Дата топика: из rss ленты или текущая на момент постинга
    • Автоматическая генерация тэгов: селективные словосочитания или релевантные слова из текста (via keva.ru), так же дополнительно можно исключить или оставить оригинальный список категорий из фида в качестве тэгов
    • Рассылки о новом топике: вкл/выкл
  • Запуск по крону (снижение нагрузки)


Хочу ещё (TODO)

  • Интерфейс конфигурирования правил
  • Интерфейс быстрого предпросмотра новостей из трубы и ручной обработки
  • (отдельно) Плагин управления крон-скриптами
  • обработка картинок (превью для топика)
  • обрезание текста

Оставляйте свои заявки по поводу функционала в комментариях.

Нужны тестеры.
Тестерам спец-цена 700 руб.

Идея "Объявления"

3
Товарищ clops предложил идею написания плагина «Объявления». А я поддержал и выступлю исполнителем :)

Предлагаю внести правки в т.з. заинтересовавшимся лицам, готовым в будущем приобрести такой плагин.

зыж. подождем реализации от eXtravert


Читать дальше

Планируется выпуск плагина Xtext - расширение стандатного парсера

6
Плагин предназначен для расширения функционала стандартного парсера (системного модуля Text).

На данный момент в нем реализовано:
  • Настраиваемый nofollow отдельным хуком — отключение nofollow для внутренних ссылок текущего домена (с учетом www и без), ссылок на субдомены текущего домена, ссылок на список доменов (с учетом www и без), субдоменов других доменов. Все настройки опциональны.
  • Переработана обработка тега video — воспринимаются видео-вставки по url из: vimeo, mailru, vkontakte, rutube, youtube, smotri.com, video.google, vision.rambler, metacafe, play.ukr.net, video.sibnet.ru, video.bigmir.net, cnctube, bashtube (пишите в комментах заявки на добавление поддержки других видео-хостингов)
  • Сделан базовый функционал для обработки пользовательских тэгов — на примере многоуровневых спойлеров и тэга user. Предлагайте свои идеи!
  • Обработка тега audioпример сделан на базе uppod
  • Сделан базовый функционал для обработки тэгов при получении свойства entityна примере тэга hide (содержимое тега в топике показывается зарегистрированным пользователям и прячется от незарегистрированных текстом из атрибута title)

Жду Ваших пожеланий по поводу функционала!

Нужны тестеры!
Тестерам скидка на период тетирования 100 руб
Плагин будет продаваться по 500 руб
  • +7
  • 15 июля 2010, 02:29
  • 1d10t